Вычислить значение поля с помощью полей двух связных таблиц

Есть три таблицы: Товар, Заказ, Чек. В таблице "Чек" есть внешний ключ "Номер заказа". В таблице "Заказ" есть внешний ключ "Номер товара" и поле "Количество товаров". Цена товара хранится в таблице "Товар" Как автоматически заполнять поле "Итоговая сумма"(количество товаров * цена товара) в таблице "Чек"?

Прошу обьяснить максимально просто, с БД начал работать не так давно.


Ответы (1 шт):

Автор решения: Egettl

Я сам использую в основном Postgres, но принцип везде похожий. Для начала нужно определиться с агрегирующей функцией. А именно SUM (Название может отличаться в различных СУБД, но суть ясна).

Далее сам запрос - тебе нужен INNER JOIN, если не ошибаюсь. Возможно меня поправят. Тут еще есть и количество товара, нужно вникать, я лишь направлю тебя в нужное русло.

Запрос будет выглядеть примерно так:

SELECT Чек.* FROM Чек INNER JOIN Чек.Номер_Заказа = Заказ.Id ON Заказ INNER JOIN Заказ.Номер_Товара = Товар.Id WHERE Чек.Id = 1

В этом запросе я не вытаскиваю и не использую поле "Количество товаров". В твоем случае мой запрос несколько усложнится. Важной деталью является то, что такой запрос может вернуть несколько копий одной записи, поэтому для корректного подсчета суммы необходимо использовать группировку GROUP BY по определенному полю.

→ Ссылка