Additionner les résultat de deux requêtes SQL en access SQL - SQL/NoSQL - Programmation
Marsh Posté le 28-09-2005 à 10:37:01
select domaine.ref_domaine, domaine.nom_domaine, count(*)
from domaine, avis_travaux
where (domaine.ref_domaine = avis_travaux.domaine1
or domaine.ref_domaine = avis_travaux.domaine2)
group by (domaine.réf_domaine, domaine.nom_domaine)
Marsh Posté le 28-09-2005 à 10:58:18
Merci, mais j'ai déja essayé cela et ça ne marche pas
En fait je m'explique ça ne marche pas vraiment, car supposons que pour un même avis le domaine1 et le domaine2 sont identiques, il ne le comptera qu'une seule fois, hors je voudrait que cela compte comme deux. D'ou le problème
Marsh Posté le 28-09-2005 à 10:59:43
sharky01 a écrit : Merci, mais j'ai déja essayé cela et ça ne marche pas |
Comment ça ça ne marche pas?
Marsh Posté le 28-09-2005 à 11:02:27
Désolé j'ai réedité mon message plus haut pour expliquer, car oui bien sur la requêtte est bonne mais elle ne fait pas exactement ce que je veux d'ou le problème
Marsh Posté le 28-09-2005 à 11:10:52
ok...dans ce cas, une union?
Code :
|
(ya sûrement moyen de faire plus simple...)
Marsh Posté le 28-09-2005 à 11:32:55
Merci mais l'union pose un léger probleme, car il n'additionne pas le contenus, je m'explique moi ce que je voudrais ce serait cela :
réf_domaine | nom_domaine|SomDomaine
----------------------------------------
1 | transmission | 3
et avec l'union j'obtiens :
réf_domaine | nom_domaine|SomDomaine
----------------------------------------
1 | transmission | 2
1 | transmission | 1
Ce n'est pas simple mon affaire
Marsh Posté le 28-09-2005 à 12:00:01
Oui mais j'ai un problème quand je fais :
select réf_domaine, nom_domaine, sum(somme1 + somme2)
from
(SELECT réf_domaine, nom_domaine, 0 AS somme1, count(*) AS somme2
FROM domaine, avis_travaux
WHERE réf_domaine=avis_travaux.domaine2
GROUP BY réf_domaine, nom_domaine)
UNION
(SELECT réf_domaine, nom_domaine, count(*) AS somme1, 0 AS somme2
FROM domaine, avis_travaux
WHERE réf_domaine=avis_travaux.domaine1
GROUP BY réf_domaine, nom_domaine);
J'ai une erreur me disant que "Le nombre de colonnes dans les deux tabes ou requêtes sélectionnées d'une requête Union ne correspondent pas."
Ce qui n'a pas de sens elle possèdent toutes deux 4 colonnes
Marsh Posté le 28-09-2005 à 12:01:59
Attention de bien utiliser UNION ALL et pas UNION (qui fait en réalité un DISTINCT dans le groupement des résultats ...).
De plus, le DISTINCTROW n'est probablement pas nécessaire vu qu'on fait des GROUP BY.
En conclusion, quelque chose comme :
Code :
|
Marsh Posté le 28-09-2005 à 12:05:23
Beegee a écrit : Attention de bien utiliser UNION ALL et pas UNION (qui fait en réalité un DISTINCT dans le groupement des résultats ...). |
ah, voilà, c'est le union all que je cherchais...pour éviter mon bidouillage de colonnes.
Marsh Posté le 28-09-2005 à 10:27:44
Voilà encore un problème , je possède une table domaine liée à une table avis_travaux pour les champs domaine1 et domaine2.
Ce que je veux c'est connaitre le nombre d'avis par domaine (qu'il s'agisse du domaine1 ou deux m'est égale)
Hors grace aux requettes suivantes :
SELECT DISTINCTROW domaine.réf_domaine, domaine.nom_domaine, Count(*) AS [Somme De domaine1]
FROM domaine INNER JOIN Avis_travaux ON domaine.réf_domaine=Avis_travaux.domaine1
GROUP BY domaine.réf_domaine, domaine.nom_domaine;
et
SELECT DISTINCTROW domaine.réf_domaine, domaine.nom_domaine, Count(*) AS [Somme De domaine2]
FROM domaine INNER JOIN Avis_travaux ON domaine.réf_domaine=Avis_travaux.domaine2
GROUP BY domaine.réf_domaine, domaine.nom_domaine;
J'arrive a comptabiliser le nombre d'avis par domaine1 ou domaine 2
Mais je n'arrive pas à réunir les deux
Merci d'avance si quelqu'un a une idée car j'ai essayé plein de choses qui n'ont pas fonctionnées.