【发布时间】:2013-02-25 13:15:58
【问题描述】:
我是 sql 的小菜鸟,我需要一些帮助。 我有 3-4 个表,我想创建一个 sqlite 命令来返回一些行。表格如下。
餐桌:餐厅
| Name | menuID | REFERENCES [Menu]([menuID])|
表格:菜单
| MenuID | Name |
表格:成分
| IngredientID | Name |
表格:Food_Incl_ingredient
| FoodIncIngredientID | FoodID REFERENCES [Food][FoodID] | IngredientID REFERENCES [Ingredient]([IngredientID])|
餐桌:食物
| FoodID | Name | Type | MenuID REFERENCES [Menu][MenuID]|
如果他们没有我会说的成分,我想查询以返回餐厅名称、食物名称和食物类型。 谢谢。
餐桌餐厅:
| Name | MenuId |
Goodys 2
Koumbaris 1
表格菜单:
| MenuID | Name |
1 koumbarisMenu
2 goodysMenu
餐桌食物:
| FoodID | Name | Type | MenuID |
29 Chef's Salad Starter 2
31 Mama's Salad Starter 2
30 Ceasar's Salad Starter 2
餐桌食品_Incl_ingredient:
| FoodInclIngredientID | FoodID | IngredientID |
1 29 1
6 31 1
8 30 1
餐桌成分:
| IngredientID | Name |
1 Cereals
2 Shellfish
SQL 查询:
SELECT Restaurant.Name, Food.Name, Food.Type
FROM Restaurant
INNER JOIN Menu ON Restaurant.menuID = Menu.MenuID
INNER JOIN Food ON Menu.MenuID = Food.MenuID
INNER JOIN Food_Incl_ingredient ON Food.FoodID = Food_Incl_ingredient.FoodID
INNER JOIN Ingredient ON Food_Incl_ingredient.FoodInclIngredientID = Ingredient.IngredientID
WHERE Ingredient.Name == 'Cereals'
预期结果:
| Name | Name | Type |
Goodys Chef's Salad Starter
Goodys Mama's Salad Starter
Goodys Ceasar's Salad Starter
我得到的唯一结果是第一行。
【问题讨论】:
-
既然你说你是新手,我就听说过《Teach Yourself SQL in 10 Minutes》这本书的好话。学习基础知识可以避免很多摸索。
-
没有成分的部分不清楚。
-
也展示你的一些努力。只要你也解决这个问题,人们就会在这里寻求帮助。
-
哎呀。这是一个愚蠢的 ;) ... 查看查询的第 6 行。您正在加入
ON Food_Incl_ingredient.FoodInclIngredientID = ...,但您应该加入ON Food_Incl_ingredient.IngredientID = ...。还有一个小提示:在最后一行使用=而不是==。 -
天啊!我简直不敢相信!谢谢,非常感谢。我不敢相信我没有看到它。 :)