Я не уверен, почему мой мозг не может обработать это прямо сейчас, но кажется, что этот запрос будет легко написать.
У меня есть 2 таблицы:
- Orders
(pk)orderID
customername
orderDate
- OrderDetails
(pk)detailsID
orderID
productName
Таким образом, при размещении нового заказа в Заказы добавляется одна строка с информацией о клиенте, а в таблице orderDetails добавляется строка для каждого заказанного продукта.
Итак, представьте эти 2 макета:
ORDERS
orderID customerName orderDate
1 John Smith 2/21/2020
2 Bill Adams 2/21/2020
3 Susan Conrad 2/21/2020
4 Amy Fetcher 2/21/2020
ORDERDETAILS
detailsID orderID productName
1 1 pillow
2 1 mattress
3 2 pillow
4 3 sheets
5 3 headboard
6 3 mattress
7 4 pillow
8 4 framed art
9 4 decals
10 4 plant stand
В моем запросе я хочу выбрать все из заказов, где дата = сегодня. Я присоединяюсь к таблице ORDERDETAILS, потому что хочу знать, когда я продал подушку в своих результатах.
Я хочу, чтобы в результатах отображалась только 1 строка для каждого заказа, поэтому в orderID 1, например, они заказали подушку и матрас. В результатах в productName для этой строки я хочу, чтобы она отображала подушку.
Если кто-то не заказывал подушку, мне все еще нужна строка, чтобы показать ее заказ сегодня, а в productName меня не волнует, что это показывает, если это не подушка. На нем может не отображаться ничего или одно из названий продуктов, которые они заказали.
Я знаю, что это не работает:
SELECT ORDERS.*, ORDERDETAILS.*
FROM ORDERS INNER JOIN ORDERDETAILS ON ORDERS.orderID = ORDERDETAILS.orderID
WHERE productName = "pillow"
Я не уверен, нужны ли мне подзапросы или какой-либо внешний оставил, может быть, оба?
Любая помощь очень ценится, спасибо!