IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Comment faire pour avoir une seule requête ?


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Comment faire pour avoir une seule requête ?
    Bonjour,

    J’ai deux requêtes :

    1ére requêtes : Req_Union

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ARTICLES.CODE_ARTICLE AS Code, ARTICLES.LIBELLE AS Libelle, SUM(ENTREES_STOCKAGE.QUANTITE_ART_STOCKE) AS SommeDeQUANTITE_ART_STOCKE
    FROM ARTICLES LEFT JOIN ENTREES_STOCKAGE ON ARTICLES.CODE_ARTICLE = ENTREES_STOCKAGE.CODE_E_ARTICLE
    GROUP BY ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE
    UNION ALL SELECT ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE, SUM(-1*[QUANTITE_ART_DESSTOCKE]) AS Expr1
    FROM ARTICLES INNER JOIN SORTIES_STOCKAGE ON ARTICLES.CODE_ARTICLE = SORTIES_STOCKAGE.CODE_E_ARTICLE
    GROUP BY ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE
    Resultat Exemple :

    ------------------------------------------------------
    ! Code    ! Libellé     ! SommeDeQUANTITE_ART_STOCKE !
    ------------------------------------------------------
    ! Ref001  ! xxxxxx1     !  500                       !
    ! Ref001  ! xxxxxx1     !  -20                       !
    ! Ref002  ! xxxxxx2     !  300                       !
    ! Ref002  ! xxxxxx2     !  -80                       !

    2ème Requêtes : Req_Afiche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
    	Req_Union.CODE_ARTICLE AS CODE,	
    	Req_Union.LIBELLE AS LIBELLE,	
    	SUM(Req_Union.SommeDeQUANTITE_ART_STOCKE) AS SommeQte
    FROM 
    	Req_Union
    GROUP BY 
    	Req_Union.CODE_ARTICLE,	
    	Req_Union.LIBELLE
    	HAVING (((SUM(Req_Union.SommeDeQUANTITE_ART_STOCKE)) IS NOT NULL))
    ORDER BY CODE_ARTICLE

    Resultat Exemple :

    ------------------------------------------------------
    ! CODE    ! LIBELLE     ! SommeQte                   !
    ------------------------------------------------------
    ! Ref001  ! xxxxxx1     !  480                       !
    ! Ref002  ! xxxxxx2     !  220                       !

    La question c’est comment faire pour avoir une seule requête ?

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Bonjour,
    Avec une union (ou je n'ai pas compris la question ) ?

    Tatayo.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Réponse
    rebonjour,

    La question c’est comment faire pour avoir une seule requête ? c-à-d une seule requête qui donne le 2ème résultat

  4. #4
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    La première requête doit être placée en sous-requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT 
    	Req_Union.CODE_ARTICLE AS CODE,	
    	Req_Union.LIBELLE AS LIBELLE,	
    	SUM(Req_Union.SommeDeQUANTITE_ART_STOCKE) AS SommeQte
    FROM 
    (SELECT ARTICLES.CODE_ARTICLE AS Code, ARTICLES.LIBELLE AS Libelle, SUM(ENTREES_STOCKAGE.QUANTITE_ART_STOCKE) AS SommeDeQUANTITE_ART_STOCKE
    FROM ARTICLES LEFT JOIN ENTREES_STOCKAGE ON ARTICLES.CODE_ARTICLE = ENTREES_STOCKAGE.CODE_E_ARTICLE
    GROUP BY ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE
    UNION ALL SELECT ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE, SUM(-1*[QUANTITE_ART_DESSTOCKE]) AS Expr1
    FROM ARTICLES INNER JOIN SORTIES_STOCKAGE ON ARTICLES.CODE_ARTICLE = SORTIES_STOCKAGE.CODE_E_ARTICLE
    GROUP BY ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE) AS req_Union
    GROUP BY 
    	Req_Union.CODE_ARTICLE,	
    	Req_Union.LIBELLE
    	HAVING (((SUM(Req_Union.SommeDeQUANTITE_ART_STOCKE)) IS NOT NULL))
    ORDER BY CODE_ARTICLE
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Ou alors utiliser WITH :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    WITH Req_Union AS
    (
    SELECT ARTICLES.CODE_ARTICLE AS Code, ARTICLES.LIBELLE AS Libelle, SUM(ENTREES_STOCKAGE.QUANTITE_ART_STOCKE) AS SommeDeQUANTITE_ART_STOCKE
    FROM ARTICLES LEFT JOIN ENTREES_STOCKAGE ON ARTICLES.CODE_ARTICLE = ENTREES_STOCKAGE.CODE_E_ARTICLE
    GROUP BY ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE
    UNION ALL SELECT ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE, SUM(-1*[QUANTITE_ART_DESSTOCKE]) AS Expr1
    FROM ARTICLES INNER JOIN SORTIES_STOCKAGE ON ARTICLES.CODE_ARTICLE = SORTIES_STOCKAGE.CODE_E_ARTICLE
    GROUP BY ARTICLES.CODE_ARTICLE, ARTICLES.LIBELLE
    )
    SELECT 
    	Req_Union.CODE_ARTICLE AS CODE,	
    	Req_Union.LIBELLE AS LIBELLE,	
    	SUM(Req_Union.SommeDeQUANTITE_ART_STOCKE) AS SommeQte
    FROM 
    	Req_Union
    GROUP BY 
    	Req_Union.CODE_ARTICLE,	
    	Req_Union.LIBELLE
    	HAVING (((SUM(Req_Union.SommeDeQUANTITE_ART_STOCKE)) IS NOT NULL))
    ORDER BY CODE_ARTICLE

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    merci beaucoup alassanediakite et rei Ichido

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/06/2012, 17h47
  2. Comment faire pour avoir une barre de chargement pour un SWF externe?
    Par rigolman dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 10/04/2009, 10h49
  3. [gedit] Comment faire pour avoir une instance de gedit par onglet ?
    Par Davidbrcz dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/06/2007, 11h58
  4. Réponses: 7
    Dernier message: 11/10/2006, 13h35
  5. Réponses: 5
    Dernier message: 06/10/2006, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo