У меня есть 3 таблицы для подсчета цены товара, и мне также нужно знать общую сумму потраченных средств, данные таблицы имя id 1 данные 2 данные2 деталь id данные id цена товара 1 1 мешок 2000 2 1 стул 2000 стол потрачен Я бы ...

0
nano nano 20 Янв 2021 в 10:11

2 ответа

Лучший ответ
SELECT data.name, d.price, s.spent
FROM data
JOIN ( SELECT data_id id, SUM(price) price
       FROM detail
       GROUP BY id ) d USING (id)
JOIN ( SELECT detali_id id, SUM(spent) spent
       FROM spent
       GROUP BY id ) s USING (id)
0
Akina 20 Янв 2021 в 07:30
SELECT td.name, SUM(d.price) AS totalPrice, SUM(s.spent) AS totalSpent
FROM table_data AS td
  JOIN (
    SELECT dataId AS id, price AS price
    FROM detail GROUP BY id
  ) AS d USING (id)
  JOIN (
    SELECT detailId AS id, spent AS spent
    FROM table_spent GROUP BY id
  ) AS s USING (id)

Результат:

name    totalPrice  totalSpent
data    4000        400

Вы можете поиграть с данными и запросами здесь: http://sqlfiddle.com/#! 9 / 51bbae / 11/3

Обновить это может быть даже лучше и еще больше того, что вы ищете, добавив GROUP BY s.id в конце, например:

SELECT td.name, SUM(d.price) AS totalPrice, SUM(s.spent) AS totalSpent
FROM table_data AS td
  JOIN (
    SELECT dataId AS id, price AS price
    FROM detail GROUP BY id
  ) AS d USING (id)
  JOIN (
    SELECT detailId AS id, spent AS spent
    FROM table_spent GROUP BY id
  ) AS s USING (id)
  GROUP BY s.id

Если у вас больше данных, результат будет выглядеть так:

name    totalPrice  totalSpent
data    4000        400
data2   6000        600

Вы можете поиграть с ним здесь: http://sqlfiddle.com/#!9/2287bd / 2/0

0
caramba 20 Янв 2021 в 07:58