Deze tabel geeft aan welke bakker welk type van brood verkoopt. Daarnaast heb ik nog 2 andere tabellen met meer info over de bakkers en meer info over de types brood
Ik wil uit deze tabel alle bakkers halen die broodtype 6 en 7 verkopen. Alleen bakker 1 voldoet hieraan, want bakker 2 verkoopt brood 7 niet.
Hoe kan ik dit met een SQL query te weten komen? Het lijkt eenvoudig, maar ik geraak er niet aan uit...
Hou er rekening mee dat er tientallen types brood kunnen zijn waarvoor een bakker gevonden moet worden.
De eerste tabel, met unieke ids, is niet noodzakelijk, dus die kan weg als dat helpt.
SELECT * FROM bakkers WHERE brood = 'zoekterm'
?
en bij meerdere zoektermen meerdere ANDs erbij?
<?php
$query = "SELECT bakkerid FROM bakkers WHERE brood = '".$zoekterm[0]."'";
foreach($zoekterm as $value) {
if($value != $zoekterm[0]) {
$query .= " AND brood = '".$value."'";
}
}
?>
Moet makkelijker kunnen, maar dit kon ik snel ff verzinen.
@ niek:
helaas werkt het zo niet. Hij gaat per record kijken en per record heeft een bakker maar 1 type brood. Voorbeeld:
SELECT * FROM bakkers WHERE brood = 6 and brood = 7
Zie je het probleem?
@ Klaasjan:
Maar wat als de gebruiker maar 1 type brood opgeeft? Dan werkt de query dus niet.
En zie ook het probleem in de post van 14u40. Als ik 3 types brood opgeeft, werkt het ook niet.
SELECT bakker_id
FROM bakkers
WHERE bakker_id IN (
SELECT bakker_id FROM bakkers WHERE brood_id = 6
)
AND bakker_id IN (
SELECT bakker_id FROM bakkers WHERE brood_id = 7
)
GROUP BY bakker_id
waarbij ik een extra geneste query toevoeg voor elke type van brood dat gezocht wordt.
Als er iemand een betere of andere oplossing vindt, altijd welkom! Alleszins bedankt voor de hulp iedereen!