Witam!
Jestem w trakcie tworzenia wyszukiwarki, i chcę aby przeszukała ona kolumnę tytuł w bazie topics i text w bazie posts.
Znalazłem coś takiego jak UNION, i zrobiłem coś takiego:
Witam!
Jestem w trakcie tworzenia wyszukiwarki, i chcę aby przeszukała ona kolumnę tytuł w bazie topics i text w bazie posts.
Znalazłem coś takiego jak UNION, i zrobiłem coś takiego:
Union tak działa. Zapewne posty i tematy muszą mieć jakąś kolumnę wspólną (taka po której odnajdujesz, że dany post jest do danego tematu), zatem “zbij je” za pomocą JOIN.
Złę zapytanie? - spróbuj jedno z poniższych.
#1
$query="
(SELECT tytul FROM topics WHERE tytul LIKE '%".$_GET['keywords']."%')
UNION
(SELECT `text` FROM posts WHERE `text` LIKE '%".$_GET['keywords']."%')
";
#2
$query="
(SELECT tytul FROM topics WHERE tytul LIKE '%".$_GET['keywords']."%')
UNION ALL
(SELECT `text` as tytul FROM posts WHERE `text` LIKE '%".$_GET['keywords']."%')
";
UNION łączy rezultaty - nie tabele, od łączenia tabel jest JOIN ewentualnie można przy pomocy WHERE połączyć, a raczej uzależnić wyniki. Ważne żeby ilosć kolumn się zgadzała no i chyba nazwy, dlatego podałem ten drugi przykład.
Dzięki, ale jeszcze nie do końca, bo teraz w jednym zapytaniu jak i w drugim $record[‘tytul’] zawiera teraz i text
i tytul
, a chciałbym żeby $record[‘tytul’] zawierała tytuł
, a $record[‘text’] text
=".$_GET['keywords']."%')
(SELECT `tytul`, '' as `tekst` FROM topics WHERE tytul LIKE '%".$_GET['keywords']."%')
UNION ALL
(SELECT '' as `tytul`, `text` as `tekst` FROM posts WHERE `text` LIKE '%".$_GET['keywords']."%')
i poniżej
echo "
“; echo " “.$record[‘tekst’].””; [/code]
Nie wiem jaki to da rezultat, praktycznie w miejsce pustego pola (’’) można wstawić jakieś pole z tabeli.