Rechercher : dans
Par :

{Oracle} Deux COUNT dans une seule requête

Dernière réponse le 29 sep 2009 à 12:09:17 EvilJajuka, le 29 sep 2009 à 06:34:16 
 Signaler ce message aux modérateurs

Bonjour,

Voilà mon problème, pour un cours, je dois écrire une requête SQL qui renvoie 2 colonnes. La première colonne affichera le nombre d'articles qui ont été commandé 6+ fois et la deuxième colonnes, les articles qui ont été commandé moins de 2 fois.

La requête qui permet d'avoir le nombre de fois que chaque article à été commandé est la suivante :

SELECT noArticle, CASE WHEN SUM(quantite) IS NULL THEN 0 ELSE SUM(quantite) END AS quantiteTotale 
FROM Article NATURAL LEFT OUTER JOIN LigneCommande 
GROUP BY noArticle


Maintenant, je ne sais plus trop quoi faire pour pouvoir afficher mes 2 colonnes. J'ai essayé ceci, mais j'obtiens seulement une colonne (articlesImpopulaires) avec 2 lignes au lieu de 2 colonnes avec une lignes.
SELECT COUNT(*) AS articlesImpopulaires 
FROM 
     (SELECT noArticle 
      FROM Article NATURAL LEFT OUTER JOIN LigneCommande 
      GROUP BY noArticle 
      HAVING CASE WHEN SUM(quantite) IS NULL THEN 0 ELSE SUM(quantite) END < 2) 
      UNION 
      SELECT COUNT(*) AS articlesPopulaires 
      FROM 
     (SELECT noArticle FROM Article NATURAL LEFT OUTER JOIN LigneCommande GROUP BY noArticle 
      HAVING  SUM(quantite) > 5)


La sortie devrait être comme ça :
NOMBREPOPULAIRES NOMBREIMPOPULAIRES                                             
-------------- -----------------                                            
          3                  4  


mais moi j'obtiens ça :
NOMBREIMPOPULAIRES                                              
------------------                                             
          3                  
          4      


Merci à l'avance :)
Configuration: Windows Vista
Firefox 3.5.3

Meilleures réponses pour « {Oracle} Deux COUNT dans une seule requête » dans :
Oracle - Les requêtes hiérarchiques Voir Cet article se base sur des tests et recherches réalisés dans la version 8.1.5 d'Oracle. Introduction Tout au long de cet article, nous allons nous intéresser à une structure de données permettant de créer un Forum de discussion, matérialisé par...
Réseau local et partage de connexion Internet VoirSommaire I. Configurer un réseau entre 2 PC seulement 1. Avec Windows Vista 2. Avec Windows XP 3. Avec Windows 98 (Me?) II. Avec plusieurs ordinateurs III. Partage de connexion internet. a. Sous windows XP et Vista b. Sous Windows...

1

 Christounet, le 29 sep 2009 à 12:09:17

Bonjour,

Le code suivant devrait faire ce que tu veux

SELECT COUNT(*) AS articlesImpopulaires 
FROM (SELECT noArticle FROM Article NATURAL LEFT OUTER JOIN LigneCommande GROUP BY noArticle HAVING CASE WHEN SUM(quantite) IS NULL THEN 0 ELSE SUM(quantite) END < 2) , SELECT COUNT(*) AS articlesPopulaires FROM (SELECT noArticle FROM Article NATURAL LEFT OUTER JOIN LigneCommande
GROUP BY noArticle HAVING  SUM(quantite) > 5)

J'ai remplacé UNION par une virgule
J'ai pas testé, à toi de voir.
A plus On se donne des souvenirs quand on se quitte.
(Marcel Achard)

Répondre à Christounet