MYSQL, сумма в одной строке несколько раз

Привет, сообщество

Это мой первый пост, я искал asnwer уже несколько дней, и я немного голоден.

У меня есть таблица в MySQL, которая выглядит так

Package | Speakers | Microphone
1       | 2        | 1
2       | 2        | 1
3       | 4        | 2

я хочу выбрать любой пакет столько раз, сколько захочу, подвести итоги и посмотреть, сколько инвентаря потребуется.

пример

Суббота имеет 3x пакет 1 и 1x пакет 3

итого мне понадобится 10 динамиков и 5 микрофонов

Это мой текущий код в php-файле

$sql = "SELECT SUM(speaker) as Speaker, SUM(microphone)   as Microphone FROM TABLE where package in('".$pk1."', '".$pk2."', '".$pk3."' '".$pk4."')";

как выбрать несколько раз одну и ту же строку, чтобы она правильно суммировалась

0

Решение

Используйте умножение с CASE выражение.

SELECT SUM(speaker *
CASE Package
WHEN 1 THEN 3
WHEN 3 THEN 1
END) AS Speaker,
SUM(microphone *
CASE Package
WHEN 1 THEN 3
WHEN 3 THEN 1
END) AS Microphone
FROM yourTable
WHERE Package IN (1, 3)

Вместо того, чтобы повторять CASE выражение, вы можете вместо этого присоединиться с подзапросом, который возвращает количества.

SELECT SUM(t.speaker * q.quantity) AS Speaker, SUM(t.microphone * q.quantity) AS Microphone
FROM yourTable AS t
JOIN (SELECT 1 AS package, 3 AS quantity
UNION
SELECT 3 AS package, 1 AS quantity) AS q
ON t.package = q.package
WHERE t.package IN (1, 3)

Это должно быть проще в использовании, если вы строите запрос динамически в PHP.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector