问题描述
|
我有三个表,其中包括:
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
但是,我对这个答案不太有信心。任何线索如何实现这一目标?
解决方法
这应该工作
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,在另一个表中将菜单ID称为Menuid真的很奇怪(订单ID也是如此!)
,我确实认为这是家庭作业,但是在回答所提出的问题时,我只是指出表的规格不完整(例如,我确定有一个CustomerOrder.idCustomer和一个名为\ “表格\”等),您可以让我们猜测应该添加到查询中还是从查询中减去什么。
在教科书中的某个地方,有一个关于联接的部分,您应该阅读一下。