2010-04-15 3 views
1

В каждой таблице есть много строк с количеством. Как и в этом, у меня есть разное количество суммы в каждой таблице. Имя каждого имени таблицы отличается. Как я могу получить общее количество всех значений в четырех таблицах в одном запросе? Есть ли способ?Как я могу получить общее количество из четырех разных таблиц в одном запросе

ответ

2

Вы попробовали что-то вроде этого?

select sum(val) from (
    select sum(col1) as val from table1 where criteria1 = 'x' 
    union all 
    select sum(col2) from table2 where criteria2 = 'y' 
    union all 
    select sum(col3) from table3 where criteria3 = 'z' 
    union all 
    select sum(col4) from table4 where criteria4 = 'w' 
) newTbl 
+0

В некоторых базах данных команда объединения автоматически удаляет повторяющиеся строки. Это будет проблемой, если вы получите ту же сумму из двух таблиц. Используйте 'union all' для сохранения дубликатов. – BenV

+0

Хорошая точка. Отредактировал мой ответ. – MJB

+0

Я использовал этот способ, я получил этот тип ошибок. # 1248 - Каждая производная таблица должна иметь свой собственный псевдоним Y Это так? и еще одна вещь «союз все» работает в mysql? – Karthik

0

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

select 
    u.user_count, 
    c.country_count 
from 
(
    select count(*) as user_count from users where username like 'f%' 
) u 
join 
(
    select count(*) as country_count from country 
) c; 

более comlpex пример: http://pastie.org/921407