Как объединить три таблицы MySQL и выбрать строки для данного атрибута (customerNumber) - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь написать запрос MySQL, который достигает следующего:

На основе выбранного customerNumber должно отображаться все продукты, заказанные клиентом со всеми деталями продукта и деталями заказа в хронологическом порядке на основе даты заказа.

ERD выглядит так: ERD

Для каждого выбранного номера клиента мне нужны только данные из заказа, деталей заказа и таблиц продуктов.

1 Ответ

0 голосов
/ 11 января 2019

Вы можете попробовать это и изменить то, что вам нужно, чтобы это работало.

Таким образом, каждый * должен быть заменен списком столбцов таблицы, которую вы хотите отобразить:

SELECT 
    C.customerNumber ,  -- the customer id
    O.*,                -- replace by O.column_name1, O.column_name2, ...
    OD.*,               -- replace by OD.column_name1, OD.column_name2, ...
    P.*                 -- replace by P.column_name1, P.column_name2, ...
FROM customers as C
-- If you only want customer with at least ONE orders, change LEFT JOIN by INNER JOIN
LEFT JOIN orders as O on O.customerNumber = C.customerNumber
-- I suppose orderLineNumber is the same than orderNumber in table orders?
LEFT JOIN orderdetails as OD on OD.orderLineNumber = O.orderNumber 
LEFT JOIN products as P on P.productCode = OD.productCode
-- The result will be order by customerNumber, of for each customerNumber by orderDate
ORDER BY C.customerNumber, O.orderDate

Это то, что вы ищете?

...