Zoeken in meerdere tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sebas

sebas

04/04/2008 16:17:00
Quote Anchor link
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]%'";

Snappen jullie wat ik bedoel, en kan dit?
Sebas
 
PHP hulp

PHP hulp

11/01/2025 20:47:59
 
- SanThe -

- SanThe -

04/04/2008 16:21:00
Quote Anchor link
WHERE .... LIKE ...... OR .... LIKE .....

$HTTP_POST_VARS[zoekterm]
Dit is antiek

Gebruik
$_POST['zoekterm']
 
Sebas

sebas

04/04/2008 16:27:00
Quote Anchor link
$sql2 = "SELECT * FROM tabel1.naam, tabel2.naam WHERE tabel1.naam LIKE '%$_POST[zoekterm]%' OR tabel2.naam LIKE '%$_POST[zoekterm]%' ";

Maar wat nou als dan allebei de tabellen resultaten geven. Dan staat er toch OR (of?)
 
Terence Hersbach

Terence Hersbach

04/04/2008 16:29:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql2
= "SELECT * FROM tabel1, tabel2 WHERE tabel1.naam LIKE '%$_POST[zoekterm]%' OR tabel2.naam LIKE '%$_POST[zoekterm]%' ";
?>

bij from alleen tabelnaam gebruiken
 
- SanThe -

- SanThe -

04/04/2008 16:33:00
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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'] . "%' ";
?>

Let op: $_POST['zoekterm'] moet MET enkele quotes. Zonder quotes moet het een constante zijn.
 
Mike van Dongen

Mike van Dongen

04/04/2008 16:34:00
Quote Anchor link
@sebas, dit kan ook beter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?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. ;)

Edit, SanThe was me voor :(
Gewijzigd op 01/01/1970 01:00:00 door Mike van Dongen
 
Sebas

sebas

04/04/2008 16:44:00
Quote Anchor link
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.
 
- SanThe -

- SanThe -

04/04/2008 16:52:00
Quote Anchor link
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.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// Niet zo
echo $_POST[zoekterm];
// Maar zo
echo $_POST['zoekterm'];
?>

Zie de kleurtjes.
 
Sebas

sebas

04/04/2008 16:54:00
Quote Anchor link
oja had ik kunnen weten, dom van me. Dan rest de vraag 'Hoe kan ik laten zien van welke tabel de resultaten komen?'
 
Frank -

Frank -

04/04/2008 16:56:00
Quote Anchor link
sebas schreef op 04.04.2008 16:54:
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?
 
- SanThe -

- SanThe -

04/04/2008 16:57:00
Quote Anchor link
Is dat niet
tabel1 AS a, tabel2 AS b

En dan
a.naam en b.naam
 
Sebas

sebas

04/04/2008 17:09:00
Quote Anchor link
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?
 
Mike van Dongen

Mike van Dongen

04/04/2008 17:24:00
 
Sebas

sebas

04/04/2008 17:26:00
Quote Anchor link
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?
 
Frank -

Frank -

04/04/2008 18:08:00
Quote Anchor link
sebas schreef op 04.04.2008 17:26:
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?
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.