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

Requêtes MySQL Discussion :

LEFT JOIN à la placede NOT iN


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut LEFT JOIN à la placede NOT iN
    mysql ne supporte pas NOT IN.
    en voulant utiliser LEFT JOIN à la place, la requete renvoit une erreur:
    Erreur de syntaxe près de 'JOIN intervention ON I.NumInc=intervention.NumInc WHERE interven' à la ligne 1
    requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT I.NumInc, I.jourAppel, I.heure,  I.NumNat, I.description, I.NumDecl, I.NumCli, D.NumDecl FROM declarants as D, incident as I where I.NumDecl=D.NumDecl and  (LEFT JOIN intervention ON I.NumInc=intervention.NumInc WHERE intervention.NumInc IS NULL)";
    Que faire??

  2. #2
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Un petit bonjour ça fait pas mal...

    MySQL supporte NOT IN depuis la version 4.1.
    Ton LEFT JOIN n'est pas correct, il ne doit pas faire parti d'une restriction mais d'une jointure dans ta requête.

    Elle devrait être de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT I.NumInc, I.jourAppel, I.heure,  I.NumNat, I.description, I.NumDecl, I.NumCli, D.NumDecl
    FROM declarants as D, incident as I
    LEFT JOIN intervention ON I.NumInc=intervention.NumInc WHERE intervention.NumInc IS NULL
    where I.NumDecl=D.NumDecl
    Mais si tu utilises MySQL suppérieur à 4.1, tu peux faire ça beaucoup plus propre avec un NOT IN.
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  3. #3
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    pardon pour avoir oublier les salutations d'usage .
    Bonjour,
    j'utilise MySQL 4.0.15

    donc je dois absolument faire marcher la requete.

    sur proposition du le post précédent, j'ai maintenant l'erreur ci dessous:
    Erreur de syntaxe près de 'where I.NumDecl=D.NumDecl' à la ligne 1

  4. #4
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT I.NumInc, I.jourAppel, I.heure,  I.NumNat, I.description, I.NumDecl, I.NumCli, D.NumDecl
    FROM declarants as D, incident as I
    LEFT JOIN intervention ON I.NumInc=intervention.NumInc AND intervention.NumInc IS NULL
    where I.NumDecl=D.NumDecl
    Je n'avais pas fais attention au WHERE qui n'avait rien à faire là dans la jointure !
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  5. #5
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    il fallait que je rectifie, c'est ON I.NumInc=intervention.NumInc
    where intervention.NumInc et non ON I.NumInc=intervention.NumInc
    and intervention.NumInc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql="SELECT I.NumInc, I.jourAppel, I.heure,  I.NumNat, I.description, I.NumDecl, I.NumCli,D.NumDecl, D.Nom, C.NumCli, I.NumCli, C.Raison_sociale  
    FROM declarants as D, client as C ,incident as I 
    LEFT JOIN intervention  ON I.NumInc=intervention.NumInc 
    where intervention.NumInc IS NULL and I.NumDecl=D.NumDecl and C.NumCli=I.NumCli  order by I.NumInc ";
    merci.

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

Discussions similaires

  1. LEFT JOIN ou NOT EXISTS ?
    Par popy67 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/06/2010, 16h15
  2. left join + not in
    Par pimpmyride dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/03/2007, 09h10
  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