SQL Расширенный запрос SELECT - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть три таблицы, которые, помимо прочего, содержат:

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 ]

1 голос
/ 14 апреля 2011

Это должно работать

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

Мне кажется странным, что идентификатор меню называется idmenu в одной таблице, а menuid - в другой (это верно и для идентификатора заказа!)

0 голосов
/ 14 апреля 2011

Я думаю, что это домашнее задание, но, отвечая на заданный вопрос, я просто укажу, что, предоставив неполную спецификацию таблиц (например, я уверен, что есть CustomerOrder.idCustomer и таблица с именем ' Таблица 'и т. Д.), Вы оставляете нас в состоянии угадать, что следует добавить или вычесть из вашего запроса. Где-то в вашем учебнике есть раздел о соединениях, который вы должны просмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...