Sql 如何将查询与子查询联接?

Sql 如何将查询与子查询联接?,sql,sql-server,join,subquery,Sql,Sql Server,Join,Subquery,所以我完全是一个新手,试图解决这个问题,我必须找到所有标记为素食但成分中含有火鸡肉的菜肴 这就是我尝试过的(这是我连接3个表以查找成分的地方): 这就是我似乎无法加入子查询以识别素食者标记的地方: WHERE Ingredients.Name = 'Turkey meat' = (SELECT Name FROM Tags INNER JOIN DishesTags ON DishesTags.TagID = Tags.ID INNER JOIN Dishes ON DishesTags.Dis

所以我完全是一个新手,试图解决这个问题,我必须找到所有标记为素食但成分中含有火鸡肉的菜肴

这就是我尝试过的(这是我连接3个表以查找成分的地方):

这就是我似乎无法加入子查询以识别素食者标记的地方:

WHERE Ingredients.Name = 'Turkey meat' =
(SELECT Name
FROM Tags
INNER JOIN DishesTags ON DishesTags.TagID = Tags.ID
INNER JOIN Dishes ON DishesTags.DishID = Dishes.ID)
数据库的示意图如下所示,以供参考:


您可以使用
exists
和子查询:

select d.*
from dishes d
where
    exists (
        select 1 
        from dishestags dt
        innerjoin tags t on t.id = dt.tagid
        where dt.dishid = d.id and t.name = 'Vegetarian'
    )
    and exists (
        select 1 
        from dishesingredients di
        inner join ingredients i on i.id = di.ingredientid
        where di.dishid = d.id and i.name = 'Turkey'
    )

让我们先看看有多少菜的配料是火鸡肉

你有:

SELECT D.ID
FROM
Dishes D 
JOIN DishIngredients DI ON D.ID = DI.DishID
JOIN Ingredients I ON DI.IngredientID = I.ID
WHERE I.Name LIKE 'Turkey meat'
然后买所有标有“素食者”标签的菜

SELECT D.ID
FROM
Dishes D 
JOIN DishIngredients DI ON D.ID = DI.DishID
JOIN Ingredients I ON DI.IngredientID = I.ID
JOIN DishesTags DT on D.ID = DT.DishID
JOIN Tags T ON DT.TagID = T.ID

WHERE I.Name LIKE 'Turkey meat'
AND T.Name = 'Vegetarian'
SELECT D.ID
FROM
Dishes D 
JOIN DishIngredients DI ON D.ID = DI.DishID
JOIN Ingredients I ON DI.IngredientID = I.ID
JOIN DishesTags DT on D.ID = DT.DishID
JOIN Tags T ON DT.TagID = T.ID

WHERE I.Name LIKE 'Turkey meat'
AND T.Name = 'Vegetarian'