SQL Advanced SELECT查询问题

问题描述

| 我有三个表,其中包括
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和一个名为\ “表格\”等),您可以让我们猜测应该添加到查询中还是从查询中减去什么。 在教科书中的某个地方,有一个关于联接的部分,您应该阅读一下。