Nie jest możliwe żeby jedna kolumna miała dwie różne nazwy (nic mi bynajmniej o tym nie wiadomo i wydaje się to dość nielogiczne) dlatego też masz rozróżnienie tabel w kolumnie table_id. Nie wiem co konkretnie chcesz z tym dalej zrobić ale możesz przecież wynik zwrócić do klasy. Uzywając np PDO wynik mapujesz do klasy a tam ustawiasz gettera przykład niżej, dzięki zmapowaniu do klasy łatwiej się pracuje możesz wrzucić tam jakie tylko zechcesz funkcji a dane pobierasz tylko raz.
res to alias dla całego wyniku, dzięki temu możesz później dodać warunki i grupowanie z całego wyniku union czy też dorzucić join
<?php
$pdo = new PDO(); // inicjalizacja połączenia, host, user, pass itd.
$query = "
SELECT
*
FROM (
SELECT
name,
id,
'A' AS table_id
FROM ".$prefix."A
WHERE A_name LIKE :nameA
UNION ALL
SELECT
name,
id,
'B' AS table_id
FROM ".$prefix."B
WHERE B_title LIKE :nameB
) res
";
$stmt = $pdo->prepare($query);
$paramName = '%'.$name.'%';
$stmt->bindParam(':nameA', $paramName, PDO::PARAM_STR);
$stmt->bindParam(':nameB', $paramName, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_CLASS, 'Wynik');
class Wynik{
public $name;
public $id;
public $table_id;
public function getName(){
return $this->name;
}
public function test(){
return $this->table_id . '_name';
}
public function getMyArray(){
return [
$this->table_id . '_name' => $this->name,
'id' => $this->id,
];
}
}
$myResult = [];
foreach ($result as $v){
$myResult[] = $v->getMyArray();
}
$result będzie zawierało tablicę obiektów Wynik, jeżeli potrzebujesz bardziej szczegółowej pomocy musisz rozwinąć problem.
Z kolei $myResult będzie zawierało tablicę której potrzebujesz, z odpowiednimi kluczami.