Faire un somme de count sur plusieurs tables [SQL - ORACLE] - SQL/NoSQL - Programmation
Marsh Posté le 27-07-2005 à 10:24:52
Simple erreur de parenthèses, non?
select sum(a)
from
(
select truc as a from chose where brol = chouette
union
select bidule as a from machin where pomme = poire
)
[edit]
Je viens de relire la question...ceci doit très bien faire l'affaire :
select count(*)
from (
select 1 from chose where brol = chouette
union
select 1 from machin where pomme = poire
)
Marsh Posté le 27-07-2005 à 10:38:03
Merci pour ta réponse mais ... je viens de tester et ca ne fonctionne pas.
En reprennant ton exemple, si j'ai 4 choses et 0 machins (exactement les nombres que j'ai avec mes requetes), le count(*) me retourne 1 ...
Marsh Posté le 27-07-2005 à 10:43:09
Worldofdada a écrit : Merci pour ta réponse mais ... je viens de tester et ca ne fonctionne pas. |
ah merde, l'union doit virer les doublons...
dans ce cas un truc de ce style devrai fonctionner :
select count(*)
from (
select 'chose' as table, id_chose as id from chose where brol = chouette
union
select 'machin' as table, id_machin as id from machin where pomme = poire
)
Marsh Posté le 27-07-2005 à 10:55:05
ho les gorets
-> Bon, déjà, les sous-requêtes, il faut toujours qu'elles retournent un MINIMUM de lignes, donc je ne veux voir que des COUNT() dedans.
-> Un UNION sur une donnée calculée, c'est pas une bonne idée, car il fait un distinct implicit. En plus, c'est lent. (ça l'est d'autant plus avec vos "select 1 from" parceque le union final ne retourne qu'une seule ligne, et ça a mis 3 plombes à la trouver...)
Bon, la solution qui marche et qui est rapide :
Code :
|
Et voilà.
Marsh Posté le 27-07-2005 à 10:57:44
me rappelais plus de 'union all' ()...c'est valable partout?
Marsh Posté le 27-07-2005 à 11:02:33
normalement, oui, en tout cas SQL Server, Oralce, Access, MySQL et POostGre le supportent (testé par mes soins )
Marsh Posté le 27-07-2005 à 11:02:56
Merci beaucoup
Ca marche niquel !
J'étais pas loin du résultat final mais heureusement que t'es passé pour me signaler le UNION ALL car sinon j'aurais eu des problèmes plus tard lors de doublons de données sans comprendre le soucis ...
Merci beaucoup a tous ceux qui ont répondus
Marsh Posté le 27-07-2005 à 10:21:43
Bonjour
Je cherche a faire la somme des enregistrements de plusieurs tables qui n'ont pas de liens ... et ça, en 1 seule requete.
C'est à dire que si une table contient 2 enregistrements, et la 2eme en contient 1, je dois avoir 3 comme résultat.
Pour info, j'ai 4 tables concernées
J'ai testé des méthodes proches de celles ci mais je n'arrive pas a le faire fonctionner (j'ai mis que 2 tables pour simplifier) :
Quelqu'un a t'il une idée ?
Merci beaucoup
Worldofdada