Я новичок в mysql
.
У меня есть запрос, чтобы получить счет из разных таблиц, и он работает нормально. Но теперь я хочу соединить все 3 запроса COUNT в 1, как SUM (COUNT1, COUNT2, COUNT3)
select COUNT(*) as count1, 0 as count2, 0 as count3 from table1
UNION ALL
select 0 as count1, COUNT(*) as count2, 0 as count3 from table2
UNION ALL
select 0 as count1, 0 as count2, COUNT(*) as count3 from table3
Например, count1 = 10, count2 = 20 и count3 = 15
Тогда я хочу получить сумму = 45
Вы можете поместить UNION
в подзапрос, а затем в SUM()
подсчеты. Но нет необходимости размещать их в отдельных столбцах в каждом объединенном запросе.
SELECT SUM(count) AS total
FROM (
SELECT COUNT(*) AS count FROM table1
UNION ALL
SELECT COUNT(*) AS count FROM table2
UNION ALL
SELECT COUNT(*) AS count FROM table3
) AS subquery
чтобы получить сумму всех счетов из ваших таблиц, вы можете написать запрос как
select
(select COUNT(*) from table1) +
(select COUNT(*) from table2) +
(select COUNT(*) from table3) as total
Следуя вашему подходу, вы можете обернуть unioined запрос в качестве подбора, а затем применить сумму к результатам
SELECT SUM(count1) + SUM(count2) + SUM(count3) total
FROM (
SELECT COUNT(*) AS count1, 0 AS count2, 0 AS count3 FROM table1
UNION ALL
SELECT 0 AS count1, COUNT(*) AS count2, 0 AS count3 FROM table2
UNION ALL
SELECT 0 AS count1, 0 AS count2, COUNT(*) AS count3 FROM table3
) t