$query1 = " SELECT * FROM ".$prefix."A,".$prefix."B WHERE ".$prefix."A.A_name LIKE '%".$name."%' OR ".$prefix."B.B_title LIKE '%".$name."%' ";
UNION?
Tak tez niby sporobowalem, lecz:
SELECT A_name,A_id FROM ".$prefix."A WHERE A_name LIKE '%".$name."%' UNION SELECT B_title,B_id FROM ".$prefix."B WHERE B_title LIKE '%".$name."%'
for($x=0;$x<$count;$x++){ $row=mysqli_fetch_assoc($result); http://www.php.net/echo $x+1; http://www.php.net/echo '. '; http://www.php.net/echo $row['A_name']; http://www.php.net/echo'<br />'; }
Dopisz sobie np. SELECT "tabela_a" AS type....
nie bardzo rozumiem, co mam osiagnac w ten sposob?
Dodatkowo proponuję korzystanie z prepared statement, dobry nawyk.
SELECT * FROM ( SELECT name, id, 'A' AS table_id FROM ".$prefix."A WHERE A_name LIKE '%".$name."%' UNION ALL SELECT name, id, 'B' AS table_id FROM ".$prefix."B WHERE B_title LIKE '%".$name."%' ) res
tak tylko feachujac to zeby zwrocic wynik musze korzystac z pola A_name
na zasadzie:
(row[A_name])
A_name | type
jakis tekst111 |A
jakis tekst22 | B
czy drugi tekst nie powinien byc pobrany
(row[B_name])
Z tym mam klopot? Czy zostawic to w tej postaci bo inaczej sie nie da?
A i takie pytanko co oznacza to 'res' w poprzednim zapytaniu?
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(); }
SELECT A_name,A_id, 0 AS type FROM prefix_A WHERE A_name LIKE '%Kurczak%' UNION SELECT B_title,B_id, 1 AS type FROM prefix_B WHERE B_title LIKE '%Kurczak%' UNION SELECT C_name,C_id, 2 AS type FROM prefix_C WHERE C_name LIKE '%Kurczak%' UNION SELECT D_title,D_id, 3 AS type FROM prefix_D WHERE D_title LIKE '%Kurczak%' ORDER BY type DESC
if($row['type']==1){ http://www.php.net/echo '<strong>[B]</strong>'; http://www.php.net/echo '<a href="index.php?s=Bview&a=view&id='.$row['B_id'].'">'.$row['recipes_name'].'</a>'; // tylko nie mam dostepu teraz do B_id? }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)