我有三个表,其中包括:
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
但是,我对这个答案并不十分自信。任何线索如何解决这个问题?
答案 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,以及一个名为'的表表'等等,您让我们处于猜测应该添加到查询中或从查询中减去的内容的位置。 在教科书的某个地方,有一个关于连接的部分,您应该查看。