Как я могу обновить общий объем продаж из двух таблиц в третью?
У меня есть три стола.
- Книги: эта таблица содержит основную информацию о книге (идентификатор, название, автор и т. Д.)
- Store1: в этой таблице указаны ежедневные продажи из магазина, который мы используем (идентификатор, цена, количество и т. Д.)
- Store2: в этой таблице указаны ежедневные продажи из другого магазина (идентификатор, цена, количество и т. Д.)
По причинам выставления счетов мы хотим добавить TotalSales в таблицу Books. Эти TotalSales должны быть обновлены, когда книга продается в Магазине 1 или 2. Как лучше всего решить эту проблему? Он может запускаться один раз в день или каждый раз, когда в 1 или 2 поступают новые продажи.
пожалуйста, дайте мне несколько рекомендаций:)
4 ответа
Создайте вид выставления счетов, который будет содержать книгу, а также рассчитать общую сумму по обеим таблицам.
Вы можете использовать либо триггер на вставке в обеих таблицах магазина, где выполняется запрос на обновление, либо запланированное задание, которое рассчитывает продажи в какой-то момент каждый день, но вопрос в том, почему у вас есть отдельные таблицы для каждого магазина? Лучшим вариантом было бы иметь таблицу магазинов для всех магазинов и таблицу продаж, которая ссылается как на таблицу магазинов, так и на таблицу книг.
Лучше всего рассчитывать TotalSales, когда вам это нужно - возможно, для просмотра? Вы также можете использовать триггеры для отдельных таблиц магазина для обновления суммы, но это не нормальная форма (и вы спрашиваете о передовых методах).
Наличие двух таблиц магазина кажется очень странным. Если вы не можете объединить их, то вам следует рассмотреть возможность создания представления, которое представляет собой объединение двух таблиц по общим полям:
create view stores
as
select book_id, price, quantity from store1
union
select book_id, price, quantity from store2
тогда представление для расчета общих продаж становится проще
create view total_sales
as
select book_id, sum(quantity)
from stores
group by book_id
Теперь вы можете просто присоединиться к представлению total_sales, когда вам нужны общие продажи книги.
Я думаю, что есть 2 способа, которые вы можете попробовать: 1. создать триггер вставки в обеих таблицах магазина. Каждый раз, когда вы продаете книгу и добавляете строку в таблицу магазинов, она обновляет итоговые продажи в таблице книг или вы можете вставить bookID в новую таблицу (tbl_dailyBookSales). В нерабочее время или по расписанию SQL процесс обновления обновляет итоговые суммы в таблице книг ночью для списка книг в tbl_dailyBookSales.
- Обе таблицы хранилищ должны иметь поле с именем create_date. Любые книги, проданные в течение дня, должны иметь сегодняшний день в магазинах. У вас может быть расписание для обновления totalSales в таблице книг на ночь.