Zoeken in meerdere tabellen
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]%'";
Snappen jullie wat ik bedoel, en kan dit?
Sebas
$HTTP_POST_VARS[zoekterm]
Dit is antiek
Gebruik
$_POST['zoekterm']
Maar wat nou als dan allebei de tabellen resultaten geven. Dan staat er toch OR (of?)
Code (php)
1
2
3
2
3
<?php
$sql2 = "SELECT * FROM tabel1, tabel2 WHERE tabel1.naam LIKE '%$_POST[zoekterm]%' OR tabel2.naam LIKE '%$_POST[zoekterm]%' ";
?>
$sql2 = "SELECT * FROM tabel1, tabel2 WHERE tabel1.naam LIKE '%$_POST[zoekterm]%' OR tabel2.naam LIKE '%$_POST[zoekterm]%' ";
?>
bij from alleen tabelnaam gebruiken
sebas schreef op 04.04.2008 16:27:
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.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sql2 = "SELECT *
FROM tabel1.naam, tabel2.naam
WHERE
tabel1.naam LIKE '%" . $_POST['zoekterm'] . "%'
OR
tabel2.naam LIKE '%" . $_POST['zoekterm'] . "%' ";
?>
$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.
Code (php)
1
2
3
2
3
<?php
$sql2 = "SELECT * FROM tabel1, tabel2 WHERE tabel1.naam LIKE '%".$_POST['zoekterm']."%' OR tabel2.naam LIKE '%".$_POST['zoekterm']."%' ";
?>
$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. ;)
Edit, SanThe was me voor :(
Gewijzigd op 01/01/1970 01:00:00 door Mike van Dongen
Terence schreef op 04.04.2008 16:29:
bij from alleen tabelnaam gebruiken
en
SanThe schreef op 04.04.2008 16:33:
FROM tabel1.naam, tabel2.naam
Met ALLEEN tabelnamen bij from werkt hij goed, alleen hoe kan ik dan weergeven welke resultaten uit welke tabel komen?
En SanThe, wat bedoel je met
SanThe schreef op 04.04.2008 16:33:
Let op: $_POST['zoekterm'] moet MET enkele quotes. Zonder quotes moet het een constante zijn.
sebas schreef op 04.04.2008 16:44:
En SanThe, wat bedoel je met
SanThe schreef op 04.04.2008 16:33:
Let op: $_POST['zoekterm'] moet MET enkele quotes. Zonder quotes moet het een constante zijn.
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?'
sebas schreef op 04.04.2008 16:54:
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?oja had ik kunnen weten, dom van me. Dan rest de vraag 'Hoe kan ik laten zien van welke tabel de resultaten komen?'
tabel1 AS a, tabel2 AS b
En dan
a.naam en b.naam
pgFrank schreef op 04.04.2008 16:56:
Je kunt (vrijwel) onmogelijk dezelfde soort data en dezelfde kolomnamen in meerdere tabellen hebben. Heb je wel genormaliseerd?
Misschien domme vraag, maar wat is genormaliseerd?
Ik maak hieruit op dat het überhaupt niet kan?
nee in dat geval heb ik niet genormaliseerd.. Is er een andere mogelijkheid dat ik kan zoeken in meerdere tabellen? Of kan t wel hiermee?
sebas schreef op 04.04.2008 17:26:
Ga dat dan eerst maar eens doen, dat is de basis van een goede database. De kans dat jouw datamodel nu goed is, is null komma niks.nee in dat geval heb ik niet genormaliseerd.. Is er een andere mogelijkheid dat ik kan zoeken in meerdere tabellen? Of kan t wel hiermee?