SQL高级SELECT查询问题

时间:2011-04-14 02:43:17

标签: sql join

我有三个表,其中包括:

CustomerOrder
---
idOrder
TableNumber

OrderStatus
--------
Menu
idMenu
Name

MenuItemOrdered
------------
idMenuItemOrdered
MenuID
OrderID
TableNumber

我想检索以下结果:

Menu.Name CustomerOrder.TableNumber CustomerOrder.OrderStatus
-------------------------------------------------------------
Fish            1               New
Chicken         1               New
Steak           1               New
Steak           2               New
Steak           2               New
Steak           2               New
Steak           2               New

我想出了:

SELECT Menu.Name, CustomerOrder.TableNumber, CustomerOrder.OrderStatus 
FROM Menu, CustomerOrder 
WHERE Menu.idMenu IN (SELECT MenuID FROM MenuItemOrdered) 
AND CustomerOrder.OrderStatus = "New" OR CustomerOrder.OrderStatus = "Cooking"
ORDER By CustomerOrder.TableNumber

但是,我对这个答案并不十分自信。任何线索如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这应该有效

SELECT Menu.Name, CustomerOrder.TableNumber, CustomerOrder.OrderStatus 
FROM CustomerOrder
JOIN menuitemordered on customeorder.idorder = menuitemordered.orderid
JOIN menu on menuitemordered.menuid = menu.idmenu
WHERE CustomerOrder.OrderStatus = "New" OR CustomerOrder.OrderStatus = "Cooking"
ORDER By CustomerOrder.TableNumber

我认为菜单ID在一个表中被称为idmenu而在另一个表中被称为menuid(这也是订单ID也是如此!)

答案 1 :(得分:0)

我确实认为这是家庭作业,但在解决问题时,我会简单地指出通过给出表格的不完整规范(例如,我确定有一个CustomerOrder.idCustomer,以及一个名为'的表表'等等,您让我们处于猜测应该添加到查询中或从查询中减去的内容的位置。 在教科书的某个地方,有一个关于连接的部分,您应该查看。