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 et except


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 46
    Points
    46
    Par défaut Left Join et except
    Bonjour !

    Je chercher a inserer les noms et prenoms des personnes dans une table 2 qui ne sont pas present dans la table 1. J ai copie coller un tuto trouve sur le net:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Table2 ( Nom, Prenom )
    SELECT Table1.Nom, Table1.Prenom
    FROM Table1 LEFT JOIN Table2 ON (Table2.Nom<>Table1.Nom) AND (Table2.Prenom<>Table1.Prenom);
    et c est pas ca. Et je comprends pas trop (inutile de dire que je debute).

    Quelqu un pourrit it m aider et par la meme occasion me donner la meme chose en utilisant EXCEPT ?

    Merci beaucoup !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Si tu fais un LEFT JOIN, tu récupèreras toutes les lignes de table1, que les conditions de jointures soient vérifiées ou non.
    Essaie en remplaçant LEFT JOIN par INNER JOIN.

    EDIT : en utilisant EXCEPT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO Table2 ( Nom, Prenom )
    SELECT Table1.Nom, Table1.Prenom
    FROM Table1 
    EXCEPT
    SELECT Table2.Nom, Table2.Prenom
    FROM Table2;

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    Merci de m aider mais j ai encore des soucis...

    1. J ai essaye en remplacant comem indique enfin je crois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Table2 ( Nom, Prenom )
    SELECT Table1.Nom, Table1.Prenom
    FROM Table1 INNER JOIN Table2 
    ON (Table2.Prenom<>Table1.Prenom) AND (Table2.Nom<>Table1.Nom);
    Table 1
    Nom Prenom
    A B
    C
    E F

    Table 2
    C D
    A B

    J aimerais avoir
    C D
    A B
    C
    E F

    Or j obtiens
    C D
    A B
    A B
    E F
    E F

    2. avec except j obtiens
    syntax error in FROM clause (access 2003)

    Voila j ai un peu honte de mes pb quand meme...
    Merci encore !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Exact, remplacer le LEFT JOIN par INNER JOIN ne résoud pas le probleme.
    En fait, je serai plutot parti sur un NOT EXISTS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO Table2 ( Nom, Prenom )
    SELECT Table1.Nom, Table1.Prenom
    FROM Table1
    WHERE NOT EXISTS
    	  (SELECT * FROM Table2
    	   WHERE Table2.Prenom = Table1.Prenom
    	   AND Table2.Nom = Table1.Nom
    	  )
    Pour le EXCEPT, pourriez vous préciser votre SGBD? Si c'est Oracle, remplacez par MINUS.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    Merci je vais essayer ca (et aussi essayer de comprendre inner left et right joint)

    J utilise access 2003 (j ai edite mon post, mais pas assez rapidement apparemment).

    Meric encore !

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

Discussions similaires

  1. count() dans *plusieurs* LEFT JOIN
    Par silver_dragoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2004, 17h20
  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, 16h38
  3. Interbase et left join
    Par Zog dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/03/2004, 08h55
  4. Non coincident MySQL (Left Join)
    Par Remiguel dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/11/2003, 21h25
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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