Hallo ieder,

Ik ben bezig met een zoekfunctie die nu redelijk begint te werken..
Nu vroeg ik me alleen af hoe je in meerdere tabellen kan zoeken in die 1 db zitten..
<?
$sql = "SELECT * FROM tbl_pagina WHERE `titel` LIKE '%".$_GET['query']."%' ";

?>

dat werkt prima..
Maar als ik nu

<?
$sql = "SELECT * FROM tbl_pagina, tbl_berichten WHERE `titel` LIKE '%".$_GET['query']."%' ";
?>

er van maak werkt het niet.. Hoe moet ik dit oplossen?
EDIT:

zie post van blanche
Als je wilt zoeken in twee tabellen met 1 query, moeten die tabellen volgens mij wel een onderlinge relatie hebben. Anders zijn je resultaten niet representatief. Een titel van een pagina lijkt mij dermate verschillend van een titel van een bericht dat er hier geen onderlinge relatie is, maar stel dat bijvoorbeeld in tbl_berichten een foreign key (vb. pagina_id) opgenomen is naar tbl_pagina, zou je het zo kunnen doen:

SELECT
     p.*,
     b.*
FROM
    tbl_pagina AS p,
    tbl_berichten AS b
WHERE
    b.pagina_id = p.id
AND
   (p.titel LIKE '%blaat%' OR b.titel LIKE '%blaat%')


ps. Query is niet getest, zou kunnen dat er nog een foutje in zit. 'blaat' kun je natuurlijk vervangen door een variabele.

pps. Wat ik bedoelde met representatief is het volgende: de resultaatset die je nu krijgt bestaat uit records waarbij een match is gevonden in ofwel de titel van een pagina ofwel van een bericht ofwel in beide. Normaal gesproken zou ik verwachten dat je alleen pagina's of berichten wilt hebben die aan een bepaalde zoekstring matchen, maar ik weet dan ook niet wat je doel is van deze query.

ppps. @Marvin: ik denk dat je nog even goed moet nalezen hoe je JOIN gebruikt, in ieder geval niet op deze manier. Dit zal in ieder geval een fout opleveren. Ik denk dat je eerder UNION bedoelt, echter moet je dan als voorwaarde in acht nemen dat de kolommen uit de ene tabel in type overeenkomen met de kolommen uit de andere tabel.

Reageren