假设我有一张叫做配料的桌子,里面有五种不同的比萨饼配料。
1. Ham
2. Pineapple
3. Banana
4. Chocolate
5. Tomato然后我有一个比萨表和一个PizzaTopping表(链接到配料)。这两张表描述了已经制作和销售的披萨。
现在,对于每个比萨饼,我想展示所有的原料,而不是我出售的每一个比萨饼。例如,如果Pizza 1是Ham、Pineaple和Banana (即原料4和5没有使用),而Pizza 2是Pinepple、Chocolate和Tomato (例如没有使用配料1和3),我会看到以下情况:
Pizza Ingredient
1 4
1 5
2 1
2 3我希望这是一个视图,所以我不能使用子查询.
发布于 2018-06-20 15:09:52
把所有的比萨饼和所有的原料一起加入,然后过滤那些和NOT EXISTS一起使用的。
SELECT
P.Pizza,
I.Ingredient
FROM
Pizza P
CROSS JOIN Ingredient I
WHERE
NOT EXISTS (SELECT 'ingredient not used' FROM PizzaTopping T WHERE T.Pizza = P.Pizza AND I.Ingredient = T.Ingredient)编辑:用于Server索引视图:
SELECT
P.Pizza,
I.Ingredient
FROM
Pizza P
CROSS JOIN Ingredient I
LEFT JOIN PizzaTopping T ON
T.Pizza = P.Pizza AND
I.Ingredient = T.Ingredient
WHERE
T.Pizza IS NULLhttps://stackoverflow.com/questions/50951417
复制相似问题