请考虑以下事项。
我有一个RecipeComponents表,它与Ingredients有一对多的关系。
我想要来自表格Recepter的recept_navn的名字,不包括Raavare香菇。
Recept与receptkomponent有一对多的关系。一个接收器有许多接收器组件。
Receptkomponent与Raavare有一对多的关系。 Raavare包含在多个容器组件中。
最初我以为我会选择并加入三个表并为raaavare_navn制作一个where子句!=蘑菇。 由于它是一对多关系,而RecipeComponent表包含多个成分,我最终会删除带有蘑菇的行,但RecipeComponent仍然会显示其他成分的行
这是我最初尝试做的事情。
SELECT DISTINCT recept.recept_id, recept_navn
FROM recept
JOIN receptkomponent ON recept.recept_id = receptkomponent.recept_id
JOIN raavare ON raavare.raavare_id = receptkomponent.raavare_id
WHERE raavare.raavare_navn != 'champignon'
GROUP BY recept_id
DATA:
Tablename: Raavare
raavare_id | raavare_navn | leverandoer
___________________________________________________
1 | dej | Wawelka
2 | tomat | Knoor
3 | tomat | Veaubais
4 | tomat | Franz
5 | ost | Ost og Skinke A/S
6 | skinke | Ost og Skinke A/S
7 | champignon | Igloo Frostvarer
Tablename:Receptkomponent
recept_id | raavare_id | nom_netto | tolerance
__________________________________________________________________
1 | 1 | 10.0 | 0.1
1 | 2 | 2.0 | 0.1
1 | 5 | 2.0 | 0.1
2 | 1 | 10.0 | 0.1
2 | 3 | 2.0 | 0.1
2 | 5 | 1.5 | 0.1
2 | 6 | 1.5 | 0.1
3 | 1 | 10.0 | 0.1
3 | 4 | 1.5 | 0.1
3 | 5 | 1.5 | 0.1
3 | 6 | 1.0 | 0.1
3 | 7 | 1.0 | 0.1
表名:接收者
recept_id | recept_navn
_____________________________
1 | margherita
2 | prosciutto
3 | capricciosa
答案 0 :(得分:0)
我想出了答案。
首先,您要创建一个查询,选择所有带有raavare'champignon'的recept_names。 然后,您创建一个查询,选择上一个查询不在的所有recept_names。
SELECT DISTINCT recept_navn
FROM recept
WHERE recept_navn NOT IN
(
SELECT DISTINCT recept_navn
FROM recept
JOIN receptkomponent
ON receptkomponent.recept_id = recept.recept_id
JOIN raavare
ON raavare.raavare_id = receptkomponent.raavare_id
WHERE raavare_navn = 'champignon'
)