Hallo,
» SELECT SQL_CALC_FOUND_ROWS rezepte.* FROM rezepte LEFT JOIN zutaten ON zutaten.rezept_id = rezepte.id WHERE zutaten.zutat = 'Krabben' AND zutaten.zutat = 'Zwiebel' ORDER BY rezept LIMIT 0,11
siehste, und wie kann nun zutaten.zutat gleichzeitig "Krabben" UND "Zwiebel" sein? Du meinst "oder", nicht "und".
günstiger erscheint mir
WHERE
zutaten.zutat [link:http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html#function_in@title=IN] ('Krabben', 'Zwiebeln')
Außerdem möchte der OP sicherlich, dass ein Rezept nur einmal angezeigt wird, auch wenn mehrere Zutaten aus der Zutatenliste passen. Deswegen rate ich zum Einsatz von
[link:http://dev.mysql.com/doc/refman/5.1/en/select.html@title=SELECT DISTINCT]
oder zur Verwendung eines Subselects statt des LEFT JOINs, der sowieso besser ein INNER JOIN wäre:
SELECT -- Gib mir
* -- alle Spalten
FROM -- aus
rezepte -- der Tabelle rezepte
WHERE -- wobei nur solche Datensätze berücksichtigt werden,
id IN ( -- deren ID in der Liste der IDs vorkommt
SELECT -- die
rezept_id -- aus den rezept_ids besteht
FROM -- in deren
zutaten -- Zutaten
WHERE -- die gesuchten
zutat IN ('Krabben', 'Zwiebeln') -- Krabben oder Zwiebeln enthalten sind
)
Freundliche Grüße
Vinzenz