2009-11-13 22 views
6

J'essaie d'exécuter plusieurs requêtes sur plusieurs tables, comme "select count (*) from TableA où x = 1" par table.Comment faire pour additionner plusieurs requêtes SQL ensemble?

Ce que je voudrais faire, est d'obtenir tous les COUNT (*) les valeurs qui sont renvoyés et leur somme en une seule valeur ...

Toutes les idées?

+0

Est-ce que vous voulez faire cela dans SQL? Ou dans votre langue d'appel - un peu plus d'information serait utile. – Paddy

Répondre

10
select sum(individual_counts) from 
(
    select count(*) as individual_counts from TableA where x = 1 
    union all 
    select count(*) from TableB where x = 2 
.... 
) as temp_table_name 

Normalement, vous n'avez besoin que de l'alias lors de la première sélection lorsque vous utilisez une union.

+0

Cela a fonctionné pour moi! Merci! (original poster) – user198923

+0

Cela ne fonctionnera pas s'il y a des comptes qui sont les mêmes. Les doublons ne seront pas inclus. Faire 'UNION ALL' devrait fonctionner cependant. –

+0

@Josh: tu as raison: j'ai édité ma réponse en conséquence. Merci! – davek

8

pas à 100% sûr de ce que vous voulez dire, mais peut-être:

SELECT (SELECT COUNT(*) FROM tableA)+(SELECT COUNT(*) FROM tableB) 
Questions connexes