Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1597 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Additionner les résultat de deux requêtes SQL en access SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Additionner les résultat de deux requêtes SQL en access SQL

n°1209545
sharky01
Posté le 28-09-2005 à 10:27:44  profilanswer
 

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  :pfff:  
Merci d'avance si quelqu'un a une idée car j'ai essayé plein de choses qui n'ont pas fonctionnées.

mood
Publicité
Posté le 28-09-2005 à 10:27:44  profilanswer
 

n°1209559
skeye
Posté le 28-09-2005 à 10:37:01  profilanswer
 

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)
 
:??:

n°1209586
sharky01
Posté le 28-09-2005 à 10:58:18  profilanswer
 

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  :(

Message cité 1 fois
Message édité par sharky01 le 28-09-2005 à 11:01:20
n°1209587
skeye
Posté le 28-09-2005 à 10:59:43  profilanswer
 

sharky01 a écrit :

Merci, mais j'ai déja essayé cela et ça ne marche pas  :??:


Comment ça ça ne marche pas? [:pingouino]

n°1209589
sharky01
Posté le 28-09-2005 à 11:02:27  profilanswer
 

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  :(

n°1209603
skeye
Posté le 28-09-2005 à 11:10:52  profilanswer
 

ok...dans ce cas, une union?
 

Code :
  1. select ref_domaine, nom_domaine, sum(somme1 + somme2)
  2. from
  3. (
  4. (select ref_domaine, nom_domaine, count(*) as somme1, 0 as somme2
  5. from ...
  6. where ref_domaine = avis_travaux.domaine1
  7. group by ref_domaine, nom_domaine)
  8. union
  9. (select ref_domaine, nom_domaine, 0 as somme1, count(*) as somme2
  10. from ...
  11. where ref_domaine = avis_travaux.domaine2
  12. group by ref_domaine, nom_domaine)
  13. )
  14. )
  15. group by ref_domaine, nom_domaine;


 
 
:??:
 
(ya sûrement moyen de faire plus simple...[:petrus75])


Message édité par skeye le 28-09-2005 à 11:11:02
n°1209627
sharky01
Posté le 28-09-2005 à 11:32:55  profilanswer
 

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 :(

n°1209631
skeye
Posté le 28-09-2005 à 11:35:05  profilanswer
 

t'es sûr d'avoir lu ma requête?:o

n°1209657
sharky01
Posté le 28-09-2005 à 12:00:01  profilanswer
 

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  :heink:

n°1209664
Beegee
Posté le 28-09-2005 à 12:01:59  profilanswer
 

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 :
  1. SELECT réf_domaine, nom_domaine, SUM(somme)
  2. FROM (
  3. SELECT domaine.réf_domaine, domaine.nom_domaine, Count(*) AS somme
  4. FROM domaine, Avis_travaux
  5. WHERE domaine.réf_domaine=Avis_travaux.domaine1
  6. GROUP BY domaine.réf_domaine, domaine.nom_domaine
  7. UNION ALL
  8. SELECT domaine.réf_domaine, domaine.nom_domaine, Count(*) AS somme
  9. FROM domaine, Avis_travaux
  10. WHERE domaine.réf_domaine=Avis_travaux.domaine2
  11. GROUP BY domaine.réf_domaine, domaine.nom_domaine)
  12. GROUP BY réf_domaine, nom_domaine;

mood
Publicité
Posté le 28-09-2005 à 12:01:59  profilanswer
 

n°1209667
skeye
Posté le 28-09-2005 à 12:05:23  profilanswer
 

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.[:petrus75]


Message édité par skeye le 28-09-2005 à 12:05:48
n°1209767
sharky01
Posté le 28-09-2005 à 13:28:39  profilanswer
 

Merci BEAUCOUP :d


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Additionner les résultat de deux requêtes SQL en access SQL

 

Sujets relatifs
Comment importer des données précises d'excel dans Access[SQL] Petit problème -> ...not contained in an aggregate function...
probleme installation SQL Server 2000[SQL Server] Enlever une contrainte IDENTITY d'une table?
SQL et VBAProblème de syntaxe SQL ???
[Resolu] Plusieurs requetes MySQL > Syntaxe PHP ?Pb formulaire access et zone de liste ! help plz !
Recuperer plusieurs ROWS SQL avec une fonction PHP ?[SQL Server] Tester si un champ = 0 dans clause SELECT
Plus de sujets relatifs à : Additionner les résultat de deux requêtes SQL en access SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR