Как объеденить 2 SQL запроса в один?
1) SELECT Cases.*, count(BotItems.id) AS "allcount" FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id LEFT JOIN BotItems ON BotItems.itemid = Items.itemid GROUP BY Cases.id
2) SELECT Cases.*, count(BotItems.id) AS "typecount" FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id AND Items.type = 1 LEFT JOIN BotItems ON BotItems.itemid = Items.itemid GROUP BY Cases.id
В первом запросе я считаю количество записей в определенной таблице
Во втором я делаю то же самое, но добавляю критерий "type", по которому выборка записей ограничивается
В результате мне нужно получить обе переменные с числом записей, как это сделать?
SELECT Cases.id, count(BotItems.id) AS "allcount",
sum(case when (BotItems.itemid = Items.itemid and IFNULL(Items.type, 0) = 1) then 1 else 0 end) as "typecount"
FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id
LEFT JOIN BotItems ON BotItems.itemid = Items.itemid GROUP BY Cases.id
Тут он считает количество Items.type = 1 общее, которое лежит в таблице Items
А мне нужно, чтобы он считал только то количество, которое удовлетворяет BotItems.itemid = Items.itemid
SELECT Cases.*, count(BotItems.id) AS "alltypecount" FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id LEFT JOIN BotItems ON BotItems.itemid = Items.itemid GROUP BY Cases.id
UNION
SELECT Cases.*, count(BotItems.id) AS "alltypecount" FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id LEFT JOIN BotItems ON BotItems.itemid = Items.itemid AND Items.type = 1 GROUP BY Cases.id
В результате будет 2 строчки возвращено в столбце с именем alltypecount:
1) всего
2) всего по типу