У меня проблема с объединением таблиц, которую мне не удалось решить. Почему-то у меня сложилось впечатление, что это проще, чем я думаю. В любом случае:
У меня есть три таблицы:
Заказы
OrderLines
оплата
В «заказах» каждая строка соответствует одному заказу, сделанному клиентом. Каждый ордер имеет идентификатор_порядка, который является первичным ключом для этой таблицы. В «строке заказа» я сохраняю содержание заказа, то есть ссылки на товары и услуги в заказе. Один заказ может, и обычно имеет много строк заказа. Наконец, в платежах я храню по одной строке для каждой транзакции, совершенной для оплаты заказа.
В идеале в одном заказе никогда не должно быть более одной соответствующей строки в платежах. Но поскольку клиенты являются клиентами, то нередко кто-то оплачивает один и тот же счет дважды, намекая на то, что в таблице платежей может быть два или более платежей за один заказ.
Поэтому было бы полезно создать запрос, который объединяет все три таблицы соответствующим образом, но мне не удалось это сделать. Например:
ВЫБРАТЬ orders.order_id, SUM (orderlines.amount), SUM (payment.amount)
ОТ заказов
LEFT JOIN
ON orders.order_id = orderlines.order_id
Платежи влево
ON orders.order_id = payment.order_id
GROUP BY orders.order_id
Цель этого объединения - узнать, равна ли сумма платежей в заказе сумме. Проблема здесь заключается в том, что две таблицы платежей и строки заказов «отвлекают» друг друга, вызывая появление нескольких строк при объединении.
Есть ли простое решение этой проблемы?