Ich weiß, es gibt viele "ähnliche" Fragen, aber ich kann nicht herausfinden, wie dies funktioniert. Ich hoffe, es ist ganz einfach für jemand anderen!MySQL Beitreten Szenario
Ich habe eine Abfrage, die wie folgt aussieht:
SELECT
d.name DishName,
alt.name AllergyName
FROM meals_dish d
JOIN meals_dishingredient di ON di.dish_id = d.id
LEFT JOIN meals_food_allergytypes fat ON fat.food_id = di.food_id
LEFT JOIN meals_allergytypes alt ON alt.id = fat.allergytypes_id
GROUP BY d.id, alt.id
ORDER BY d.name
, die mich Tabelle ähnlich der folgenden schenkt:
Dish Name | AllergyName
-----------------------------------------
Almond Pudding | NULL
Almond Pudding | Egg
Apple Cake | Milk
Apple Cake | Lactose
Apple Cake | Egg
Apple Cake | NULL
Avocado Chocolate Cream | Milk
Avocado Chocolate Cream | Lactose
Avocado Chocolate Cream | NULL
Avocado Chocolate Cream | Peanuts
Avocado Chocolate Cream | Tree Nuts
Avocado Chocolate Cream | Soy
Avocado Egg | NULL
Avocado Egg | Egg
Bacon Wrapped Asparagus | NULL
Baked Cauliflower | NULL
Baked Cauliflower | Milk
Baked Cauliflower | Lactose
Baked Salmon | NULL
Baked Salmon | Milk
Baked Salmon | Lactose
Nun, was würde ich tun, ist zu machen eine Liste aller Gerichte, bei denen einer der Allergie-Namen für ein bestimmtes Gericht nicht "Egg" oder etc. ist.
Zum Beispiel, wenn ich nur Geschirr bekommen wollte, dass jemand, der Egg nicht essen konnte, dann wäre ich Lauf Diese Abfrage und sollte die Gerichte von Avocado Chocolate Cream, Bacon Wrapped Asparagus, Baked Cauliflower and Baked Salmon
zurück.
Ich habe versucht, einige WHERE NOT IN und andere ähnliche einzurichten, aber ich weiterhin nur eine bestimmte Zutat aus dem Gericht zu entfernen, anstatt nur die Schüssel nicht zu wählen. Zum Beispiel würde Apple Cake bei meinen Suchanfragen mit dem Beispiel "Egg" einfach noch zurückkehren, aber die spezifische Zeile von "Egg" würde jetzt nicht angezeigt.
Warum verwenden Sie 'GROUP BY' ohne Aggregatfunktionen? – kchason