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 :

Requête union avec group by qui gère les 2 requêtes.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Par défaut Requête union avec group by qui gère les 2 requêtes.
    Bonjour, J'ai le problème suivante avec ma requête union:

    Ce que j'aimerais faire c'est de faire un groupe by sur mes 2 requêtes en même temps.

    Mais il ne faut pas que le group by soit appliqué à la deuxième requête (La requête après le union all).

    Pour être plus clair, dans ma 2ème requête j'ai des doublons que j'aimerais conserver. mais ce que j'aimerais faire c'est supprimer les doublons de la 1er à la 2ème requête.

    voici ma 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
    18
    19
    SELECT CommandesLignesF.CodeAnalytique, 
    CommandesLignesF.CodeFournisseur,
    CommandesLignesF.CodeArticle,
    CommandesLignesF.QteValidee, 
    CommandesLignesF.PrixUnitaire
     
    FROM CommandesLignesF
    WHERE (((CommandesLignesF.CodeAnalytique)="41691M"));
     
     
    UNION ALL
    SELECT MouvementsStock.CodeAffaire,
     MouvementsStock.CodeFournisseur, 
    MouvementsStock.CodeArticle, 
    MouvementsStock.Quantite, 
    MouvementsStock.PrixU
     
    FROM MouvementsStock
    WHERE (((MouvementsStock.CodeAffaire)="41691M"));
    Merci pour votre aide et j'espère que j'ai été assez clair.

  2. #2
    Membre très actif
    Avatar de jpelaho
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 120
    Par défaut
    Bsr juha,

    Je suis sûr qu'en posant ton problème d'une autre manière tu auras plus de réponses. Quel est le problème métier que tu veux résoudre ? En d'autres termes quel est le résultat que tu attends de cette requête.

    Je vois que tu manipules les lignes de commande et les transactions de stock. Voudrais tu avoir pour chaque ligne de commande les mouvements de stock associés pour ton code affaire '41691M' ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    En faites pour résumer ma situaton:

    J'ai 2 tables une contenant des achats et l'autre des mouvements stock, j'aimerais que ma requête me retourne tout les mouvements de stock et les achats.

    Mais le problème c'est que j'ai des doublons entre les achats et les mouvements de stock (Ceux la j'aimerais les regrouper).

    Par contre les doublons dans ma table mouvements de stock, j'aimerais les conserver.


    Merci de votre aide.

  4. #4
    Membre très actif
    Avatar de jpelaho
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 120
    Par défaut
    Si M = Table des mvts de stock et A = Table des achats

    Juste pour bien te comprendre, tu veux donc les éléments qui sont à la fois dans M et A (intersection de A et M) ensuite tu ajoutes (par une clause UNION ALL) les éléments de A qui ne sont pas dans M (Complémentaire de A dans M) ensuite tu ajoutes (par une clause UNION ALL) les éléments de M qui ne sont pas dans A (Complémentaire de M dans A).

    Seulement dans ce cas si il y a un doublon dans la table des achats pour un élément qui n’est pas dans la table des mouvements de stock, il apparaîtra plusieurs fois (tu n’as pas été précis sur ce cas).

    C'est un peu tordu c'est vrai mais c'est la compréhension que j'ai de ton pb.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Par défaut
    Citation Envoyé par jpelaho Voir le message
    Si M = Table des mvts de stock et A = Table des achats

    Juste pour bien te comprendre, tu veux donc les éléments qui sont à la fois dans M et A (intersection de A et M) ensuite tu ajoutes (par une clause UNION ALL) les éléments de A qui ne sont pas dans M (Complémentaire de A dans M) ensuite tu ajoutes (par une clause UNION ALL) les éléments de M qui ne sont pas dans A (Complémentaire de M dans A).

    Seulement dans ce cas si il y a un doublon dans la table des achats pour un élément qui n’est pas dans la table des mouvements de stock, il apparaîtra plusieurs fois (tu n’as pas été précis sur ce cas).

    C'est un peu tordu c'est vrai mais c'est la compréhension que j'ai de ton pb.
    En faites j'aimerais simplement rajouté les éléments de la table achats qui ne se trouve pas dans la table stock, ceux qui ci trouve déjà ne pas les insérer.


    Pour l'instant avec ma requête j'arrive à insérer tout les éléments de mes 2 tables.

    Merci bcp de votre aide.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Je pense que ceci devrait marcher, si j'ai bien compris ce que tu demandais, ce n'est peut être pas très élégants mais bon..

    Tu auras tout les enregistrements de la première table ne se trouvant pas dans la deuxième ainsi que tout les enregistrements de la deuxième table.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    (SELECT CommandesLignesF.CodeAnalytique, 
    CommandesLignesF.CodeFournisseur,
    CommandesLignesF.CodeArticle,
    CommandesLignesF.QteValidee, 
    CommandesLignesF.PrixUnitaire
     
    FROM CommandesLignesF
    WHERE (((CommandesLignesF.CodeAnalytique)="41691M"))
    group by 1,2,3,4,5
     
    Minus  
    SELECT MouvementsStock.CodeAffaire,
     MouvementsStock.CodeFournisseur, 
    MouvementsStock.CodeArticle, 
    MouvementsStock.Quantite, 
    MouvementsStock.PrixU
     
    FROM MouvementsStock
    WHERE (((MouvementsStock.CodeAffaire)="41691M"))
    group by 1,2,3,4,5
    )
     
    UNION ALL
    SELECT MouvementsStock.CodeAffaire,
     MouvementsStock.CodeFournisseur, 
    MouvementsStock.CodeArticle, 
    MouvementsStock.Quantite, 
    MouvementsStock.PrixU
     
    FROM MouvementsStock
    WHERE (((MouvementsStock.CodeAffaire)="41691M"));

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Par défaut
    Merci pour vos réponse,

    Le code que tu m'a fourni ne fonctionne pas sous access.

    Le minus n'est pas reconnnu sous access?.


    merci de votre aide.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut
    Citation Envoyé par juha Voir le message
    Merci pour vos réponse,

    Le code que tu m'a fourni ne fonctionne pas sous access.

    Le minus n'est pas reconnnu sous access?.


    merci de votre aide.
    Je suis désolée, je ne sais pas t'aider alors, cherche si une fonction ensembliste similaire existe. Le minus, sous oracle, prends les records de la première requête qui ne sont pas dans la seconde.

Discussions similaires

  1. procédure pl/sql qui gére les jobs oracle
    Par younes32 dans le forum PL/SQL
    Réponses: 6
    Dernier message: 17/06/2009, 10h52
  2. Requête imbriquée avec group by
    Par pobrouwers dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2009, 00h56
  3. Requète Complexe avec GROUP BY et classement descendant
    Par snoups58 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/10/2008, 18h44
  4. Programme qui gère les QCM
    Par Ora92_IDS dans le forum Langage
    Réponses: 7
    Dernier message: 03/04/2007, 17h58
  5. Requête UNION avec champ Oui/non
    Par Mariboo dans le forum Access
    Réponses: 4
    Dernier message: 01/08/2006, 08h36

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