Подтвердить что ты не робот

SQL: Combine Выберите счетчик (*) из нескольких таблиц

Как вы комбинируете множественный подсчет числа (*) из другой таблицы в один возврат?

У меня такая же ситиляция, как и post

но я хочу один возврат.

Я попробовал Союз, но он плюнул назад на три отдельные строки подсчета. Как вы объедините их в один?

select count(*) from foo1 where ID = '00123244552000258'
union all 
select count(*) from foo2 where ID = '00123244552000258'
union all
select count(*) from foo3 where ID = '00123244552000258'

edit: Я на MS SQL 2005

4b9b3361

Ответ 1

SELECT 
(select count(*) from foo1 where ID = '00123244552000258')
+
(select count(*) from foo2 where ID = '00123244552000258')
+
(select count(*) from foo3 where ID = '00123244552000258')

Это простой способ.

Ответ 2

select 
  (select count(*) from foo) as foo
, (select count(*) from bar) as bar
, ...

Ответ 3

Я удивлен, что никто не предложил эту вариацию:

SELECT SUM(c)
FROM (
  SELECT COUNT(*) AS c FROM foo1 WHERE ID = '00123244552000258'
  UNION ALL
  SELECT COUNT(*) FROM foo2 WHERE ID = '00123244552000258'
  UNION ALL
  SELECT COUNT(*) FROM foo3 WHERE ID = '00123244552000258'
);

Ответ 4

В основном вы делаете подсчеты в качестве подзапросов в стандартном выборе.

Примером может быть следующее: это возвращает 1 строку, два столбца

SELECT
 (SELECT COUNT(*) FROM MyTable WHERE MyCol = 'MyValue') AS MyTableCount,
 (SELECT COUNT(*) FROM YourTable WHERE MyCol = 'MyValue') AS YourTableCount,

Ответ 5

Вы можете комбинировать свои счета, как вы делали раньше, но затем вы могли бы суммировать их по нескольким путям, один из которых показан ниже:

SELECT SUM(A) 
FROM
(
    SELECT 1 AS A
    UNION ALL 
    SELECT 1 AS A
    UNION ALL
    SELECT 1 AS A
    UNION ALL
    SELECT 1 AS A
) AS B

Ответ 6

вы можете назвать все поля и добавить внешний выбор в эти поля:

SELECT A, B, C FROM ( your initial query here ) TableAlias

Это должно сделать трюк.

Ответ 7

select sum(counts) from (
select count(1) as counts from foo 
union all
select count(1) as counts from bar)

Ответ 8

Для оракула:

select( 
select count(*) from foo1 where ID = '00123244552000258'
+
select count(*) from foo2 where ID = '00123244552000258'
+
select count(*) from foo3 where ID = '00123244552000258'
) total from dual;