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 :

Requete avec NOT IN


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Par défaut Requete avec NOT IN
    Salut tout le monde!
    Alors voila, je voudrais faire une petite requete toute simple avec NOT IN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM table WHERE id NOT IN ("SELECT id FROM table1")
    Et la, il me retourne toutes les valeurs de table!
    Alors j ai essaye de mettre des valeurs a la place de la deuxieme requete, et ca me renvoie les bonnes informations. J ai essaye de virer les ", mais ca me met une erreur de syntaxe. J ai essaye d aliaser, mais ca fait rien de plus. Si je mets pas le NOT, il me renvoie aucune valeur. Si je mets un "!=" a la place du NOT IN, il me renvoie aussi toutes les valeurs...
    Comme vous voyez, j ai essaye plein de trucs, mais y a rien qui me renvoie les bonnes valeurs... J y comprends pas grand chose :
    Quelqu un a une idee?

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    il ne faut pas mettre de quote.

    dans ce cas quelle erreur as tu?
    as tu bien une version >=4.1?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Par défaut
    Non, j ai MySQL 4.0.15.
    Il me semblait bien qu il y avait une histoire de version, mais j ai pu retrouver le truc nulle part...
    Quand je mets pas les quote, il me repond ca :
    #1064 - Erreur de syntaxe près de 'SELECT id_doc
    FROM vu )
    Donc, si j ai un souci de version, a part en changer, quelles options me reste t il?

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    oui tu ne peux pas fiare de requêtes imbriquées!!

    essaie ceci :

    select id from table join table1 on table.id <> table1.id

  5. #5
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Par défaut
    En sql, il ne peut pas y avoir de guillemet mais des simple quote.
    Dans ton cas il ne doit pas y en avoir du tout.

    Par rapport à mysql, est ce que ça gère les sous requetes ?
    Je crois que non
    à ce moment la du doit faire :

    select t1.id as id from table t1 left join table t2 on t1 = t2
    where t2 IS NULL

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Par défaut
    Cybher, avec ta methode, je me retrouve avec plus de 36000 references (alors que ma table principale n en a que 205!).
    Cgougeon, ta requete marche nickel... Malheureusement, je la comprends pas...

  7. #7
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Par défaut
    C'est une jointure à gauche (left join) de deux tables.

    Je prends toutes les valeurs de T1 et j'associe les valeurs de T2 si il y en a. Dans le cas contraitre les valeurs des colonnes T2 sont initialisé à NULL( au résultat de la requete). J'ajoute la condition t2 is null pour supprimer les cas ou des lignes de T1 ont été associé à t2.

    a+ en espérant que mon explication soit assez claire.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Par défaut
    Ben justement, c est ce WHERE qui me gene un peu.
    Moi, je comprends qu il doit garder toutes les donnees ou t2 est null. Je comprends pas pourquoi il les supprime...
    Mais bon, j ai jamais aime les jointures, je vais voir pour me documenter un peu plus.
    Merci!

  9. #9
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 24
    Par défaut
    Soit T1 (id) avec trois lignes
    t1r1
    t1r2
    t1r3

    Soit T2(id, ref t1) avec deux lignes
    t2r1 , t1r1
    t2r2 , t1r2

    Résultat de la jointure : T1 LEFT JOIN T2 on t1.id = t2.reft1
    t1r1 , t2r1 , t2r1
    t1r2 , t2r2 , t2r2
    t1r3 , NULL , NULL

    En ajoutant la condition t2.id = null je garde seulement la dernière ligne.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Par défaut

    Je suis trop con!
    J ai totalement oublie ce que je voulais garder...
    Forcement que si je veux avoir les id qui sont dans une table et pas dans l autre, il faut que je garde celles ou c est null...
    Desole pour les dernieres questions stupides...
    Encore merci

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

Discussions similaires

  1. Une requete de slection avec not exists
    Par abbd dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/02/2009, 19h09
  2. requete avec 'not in' + List
    Par nadhem dans le forum Hibernate
    Réponses: 6
    Dernier message: 07/01/2008, 14h59
  3. sous requete avec Not In
    Par tomy29 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/09/2007, 11h41
  4. [MySQL] Requete avec NOT IN
    Par ChrisMan dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/05/2007, 11h16
  5. requete avec and not
    Par krfa1 dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/09/2006, 16h39

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