У меня есть две таблицы, одна с количеством поставок в разные магазины в зависимости от дня недели. Как это:
stores
store-n | mon | tue
store 1 | 0 | 2
store 2 | 1 | 1
И там, где показано, какая часть продукта поставляется. Как это:
quantum
store-n | p1 | p2 |
store 1 | 20 | 15 |
store 2 | 5 | 8 |
Мне нужно показать, сколько отдельного продукта должно быть доставлено в определенный день в каждый магазин.
Как это:
Count of p1 on monday:
store-n | p1*mon |
store 1 | 0 |
store 2 | 5 |
Count of p2 on tuesday:
store-n | p2*tue |
store 1 | 30 |
store 2 | 8 |
Таким образом, количество продуктов умножается на количество посылок для каждого магазина. Я пробовал этот запрос: SELECT stores.store-n, (quantum.p1 * stores.mon) FROM quantum, stores
Но, кажется, он умножает 1-ю строку одной таблицы на каждую строку в другой, затем на следующую и так далее. Каков правильный способ сделать это?
А также в конце мне нужна сумма столбца результата.
В вашем запросе отсутствует условие соединения, что приводит к перекрестному соединению между вашими двумя таблицами. Мы могли бы исправить исходный запрос, но лучше было бы написать его с помощью явных объединений:
SELECT
s.'store-n',
q.p1 * s.mon AS p1_cnt,
q.p2 * s.tue AS p2_cnt
FROM stores s
INNER JOIN quantum q
ON s.'store-n' = q.'store-n';
SELECT (store.mon * quantum.p1) AS 'p1*mon', (store.tue * quantum.p2) AS 'p2*tue'
FROM 'store'
LEFT JOIN quantum
ON store.store_n = quantum.store_n