在处理查询中不存在的子句时遇到了一些问题。SQL不存在问题
我有三个表:
膳食
no_meal integer
type_meal varchar(255)
消耗
no_meal integer
designation varchar(255)
quantity integer
食品
designation varchar(255)
quantity integer
type varchar(255)
食物中的数量是储存的数量,消耗的数量是消费量,所以它们会有所不同,因此自然的内部连接不会削减它。
- 食物类型可以是'饮料''肉''鱼'等。
- 类型餐可以是“早餐”“午餐”“晚餐”
我想要一个查询,会告诉我已在所有类型的饭菜被消耗的饮料。
我一直在切换和测试代码,但无法做到正确。目前我正在尝试这个:
SELECT Consumed.designation
FROM Consumed
WHERE NOT EXISTS
(SELECT type_meal
FROM Consumed, Food, Meal
WHERE Consumed.designation = Food.designation
AND Consumed.no_meal = Meal.no_meal
AND type = 'Drink'
ORDER BY Food.designation)
EXCEPT
(SELECT type_meal
FROM Meal);
这到底是怎么回事?
感谢您的输入。
编辑:
我会为了更清楚地添加一些数据。
食品
Steak 100 Meat
Water 200 Drink
Coca cola 300 Drink
膳食
0001 Breakfast
0002 Lunch
0003 Dinner
消耗
0001 Water 50
0002 Steak 20
0001 Coca cola 20
0003 Water 5
0002 Water 15
现在,我想知道哪些DRI nk已经在每餐中消耗,只会给水。
希望我清除心中的一些有关该问题的
此查询不需要数量。我只是把它放在那里,因为它不同,自然的内部连接不能使用。 – Martin 2010-11-25 18:44:02
我需要的是在每种类型的餐中消费的“饮料”类型的食物名称。如果你不使用食物,你怎么区分饮料中的肉和鱼? – Martin 2010-11-25 18:45:21
THANK YOUUUUUUUUUUUUUUUUUUUUUU :) That works;) – Martin 2010-11-25 20:01:04