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 :

LEFT JOIN répétition


Sujet :

Langage SQL

  1. #1
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut LEFT JOIN répétition
    Bonjour,

    Je possède deux tables, une qui contient une liste de commandes identifiés comme-ceci (une commande peut avoir x lignes) :
    Num Commande;Num Maitre (1ere ligne)
    123456010;123456010
    123456020;123456010
    123456030;123456010
    845612050;845612050
    845612100;845612050
    563214010;563214010
    563214020;563214010
    563214030;563214010
    345678010;345678010
    345678020;345678010

    Une autre table qui elle contient une relation qui défini si une commande est traité:
    Num Trait;Num Commande;Num Maitre
    1;123456010;123456010
    1;123456030;123456010
    5;845612100;845612050
    10;563214010;563214010
    10;563214020;563214010
    10;563214030;563214010

    Je cherche une requête qui me permette d'extraire les commandes dont le code maitre est bien présent dans les traitements mais dont il reste des lignes dans la table commande.

    Exemple ici la requête doit sortir du coup 123456020 et 845612050 puisque ces deux lignes ne sont pas présentent dans traitement mais leur numéro maitre oui.

    Pour le moment j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT O.NumCommande, O.NumMaitre, P.NumCommande, P.NumMaitre
    FROM M3_OPERAT O
    LEFT JOIN M3_FDR_POSI P ON P.NumMaitre= O.NumMaitre
    LEFT JOIN M3_FDR_POSI P1 ON P1.NumCommande= O.NumCommande
    WHERE P.NumMaitreIS NOT NULL
    AND P1.NumCommandeIS NULL
    Mais avec ça j'ai un problème j'obtiens plusieurs lignes en doublons lorsque plus d'une ligne reste non utilisé dans la table des commandes

    Merci pour votre aide en espérant avoir été assez claire

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Avec EXISTS c'est plus simple qu'avec des LEFT JOIN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT O.NumCommande, O.NumMaitre
      FROM M3_OPERAT O
     where not exists (select 1
                         from M3_FDR_POSI P
                        where P.NumMaitre   = O.NumMaitre
                          and P.NumCommande = O.NumCommande)
       and exists (select 1
                     from M3_FDR_POSI P1
                    where P1.NumMaitre = O.NumMaitre)

  3. #3
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Oui en effet, mais en terme de performance qu'est ce que cela donne ?

    Ce sont des tables très remplis

    Merci.

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Je voudrais aussi avoir du coup la correspondance des NumCommandes qui se trouvent dans la table de traitement.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par cerede2000 Voir le message
    Je voudrais aussi avoir du coup la correspondance des NumCommandes qui se trouvent dans la table de traitement.
    Ben dans ce cas que donne les LEFT JOIN avec DISTINCT ?

Discussions similaires

  1. count() dans *plusieurs* LEFT JOIN
    Par silver_dragoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2004, 18h20
  2. LEFT JOIN avec Oracle 8i ne va pas... doit utiliser (+)
    Par loikiloik dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 17h38
  3. Interbase et left join
    Par Zog dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/03/2004, 09h55
  4. Non coincident MySQL (Left Join)
    Par Remiguel dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/11/2003, 22h25
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 14h57

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