我有一個多對多關係,通過聯結表連接。我的具體情況是食譜和配料。我想選擇所有不包含給定列表中不含成分的食譜。例如,如果我輸入芝士,烤麪包和餅乾,我希望結果包括烤麪包,奶酪和薄脆餅乾,但不包括吐司麪包。MySQL多對多聯結表:從A中選擇所有不包含B中的值的項不在列表中
因此,像:
SELECT * FROM
recipe
JOIN recipe_ingredient on recipe.id = recipe_ingredient.recipe_id
JOIN ingredient on ingredient.id = recipe_ingredient.ingredient_id
WHERE ingredient.name
???
("cheese", "toast", "crackers")
選擇其中確實包含任何或所有這些成分是很容易的,但如果能夠避免它,我不希望有隨後篩選出結果的食譜其中包含未列出的成分。
編輯:
一些示例表:實現這個
ingredient
-----------
id | name
1 | "cheese"
2 | "toast"
3 | "crackers"
4 | "jam"
recipe
-----------
id | name
1 | "cheese on toast"
2 | "cheese with crackers"
3 | "jam on toast"
recipe_ingredient
-------------------------
recipe_id | ingredient_id
1 | 1
1 | 2
2 | 1
2 | 3
3 | 2
3 | 4
你能告訴您三個表的一些樣本數據,好嗎?只需幾行,我們就可以瞭解數據在這些表格上的格式。 –