Hoe kan ik zoeken in meerdere tabellen van één database in MySql?
In één tabel lukt uiteraard:
$sql = "SELECT * FROM tabel1 WHERE naam LIKE '%$HTTP_POST_VARS[zoekterm]%'";
Hoe kan ik bijvoorbeeld in tabel1 én in tabel2 zoeken. Als er in tabel 1 niks staat, dat er nog wel zoekresultaten van tabel2 worden weergegeven en andersom. Zeg maar zo iets:
$sql2 = "SELECT * FROM tabel1.naam, tabel2.naam WHERE naam LIKE '%$HTTP_POST_VARS[zoekterm]%'";
<?php
$sql2 = "SELECT * FROM tabel1, tabel2 WHERE tabel1.naam LIKE '%$_POST[zoekterm]%' OR tabel2.naam LIKE '%$_POST[zoekterm]%' ";
?>
bij from alleen tabelnaam gebruiken
Maar wat nou als dan allebei de tabellen resultaten geven. Dan staat er toch OR (of?)
Ja, dus als er 'iets' wordt gevonden óf in tabel1 óf in tabel 2, dat maakt niet uit.
Haal $vars buiten de quotes en schrijf je query netter op.
<?php
$sql2 = "SELECT *
FROM tabel1.naam, tabel2.naam
WHERE
tabel1.naam LIKE '%" . $_POST['zoekterm'] . "%'
OR
tabel2.naam LIKE '%" . $_POST['zoekterm'] . "%' ";
?>
Let op: $_POST['zoekterm'] moet MET enkele quotes. Zonder quotes moet het een constante zijn.
@sebas, dit kan ook beter:
<?php
$sql2 = "SELECT * FROM tabel1, tabel2 WHERE tabel1.naam LIKE '%".$_POST['zoekterm']."%' OR tabel2.naam LIKE '%".$_POST['zoekterm']."%' ";
?>
Dit zal minder errors geven en dus sneller zijn. ;)
En SanThe, wat bedoel je met [quote='SanThe schreef op 04.04.2008 16:33']Let op: $_POST['zoekterm'] moet MET enkele quotes. Zonder quotes moet het een constante zijn.
[/quote]
<?php
// Niet zo
echo $_POST[zoekterm];
// Maar zo
echo $_POST['zoekterm'];
?>
Zie de kleurtjes.
oja had ik kunnen weten, dom van me. Dan rest de vraag 'Hoe kan ik laten zien van welke tabel de resultaten komen?'
Wanneer je dat niet weet, dan is je datamodel fout. Je kunt (vrijwel) onmogelijk dezelfde soort data en dezelfde kolomnamen in meerdere tabellen hebben. Heb je wel genormaliseerd?