Привет, сообщество
Это мой первый пост, я искал 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."')";
как выбрать несколько раз одну и ту же строку, чтобы она правильно суммировалась
Используйте умножение с 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.
Других решений пока нет …