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 :

problème avec NOT IN


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut problème avec NOT IN
    Bonjour à tous

    j'ai un petit problème avec l'utilisation de NOT IN non pas au niveau de la syntaxe mais plutôt du résultat retourné
    voici d'abord ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT cat.kdo, cat.dossier
    FROM stim_catalogue cat
    WHERE cat.kdo NOT IN (SELECT lev.kdo FROM stim_levier WHERE lev.dossier = cat.dossier)
    et voici mes deux tables et ce qu'elles peuvent contenir
    stim_catalogue (id - kdo - dossier)
    1 321 3
    2 322 3
    3 324 3

    stim_levier (id - kdo - dossier ....)
    8 321 3
    9 322 3

    moi dans requête je voudrais afficher tous les cadeaux d'un dossier de la table stim_catalogue qui ne sont pas dans la table stim_levier
    par exemple ici je dois afficher la ligne de l'ID "9" car kdo "324" et dossier "3" qui n'est pas dans stim_levier
    or dans ma requête il ne me trouve aucun résultat donc je pense que ma requête n'est pas juste probablement au niveau du NOT IN (...)

    je fais donc appel à vous pour m'éclairer

    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Bonsoir
    il manque un alias au niveau de la sous requête, lev n'est pas défini

  3. #3
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    ça ne change rien à ma requête je dirais même que c'est mieux sans alias dans la requête imbriquée
    sinon on collègue me dit de faire ça en deux requête avec une boucle
    mais bon j'aurai aimé faire ça directement dans phpmyadmin car c'est juste pour sortir très rapidement des stats pour les assistantes commerciales

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par mdr_cedrick Voir le message
    ça ne change rien à ma requête je dirais même que c'est mieux sans alias dans la requête imbriquée
    Dans ce cas pourquoi ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE cat.kdo NOT IN (SELECT lev.kdo FROM stim_levier WHERE lev.dossier = cat.dossier)

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 091
    Points : 31 510
    Points
    31 510
    Billets dans le blog
    16
    Par défaut
    Vous pourriez compléter avec un test sur kdo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT cat.kdo, cat.dossier
    FROM stim_catalogue cat
    WHERE cat.kdo NOT IN (SELECT lev.kdo 
                          FROM stim_levier lev 
                          WHERE lev.dossier = cat.dossier
                          AND   lev.kdo = cat.kdo
                         )

  6. #6
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    et bien non
    même avec ce complément je n'ai aucunes lignes qui s'affichent alors que je sais très bien qu'il y en a qui devraient s'afficher

  7. #7
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Tu peux essayer ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT cat.kdo, cat.dossier
    FROM stim_catalogue cat LEFT OUTER JOIN stim_levier lev 
    ON (lev.dossier = cat.dossier
          AND   lev.kdo = cat.kdo)
    WHERE lev.dossier IS NULL

  8. #8
    Membre averti Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Points : 336
    Points
    336
    Par défaut
    en faite je viens de trouver la solution et vous n'auriez pas pu m'aider ...
    j'ai honte mais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT cat.kdo, cat.dossier
    FROM stim_catalogue cat
    WHERE cat.kdo NOT IN (SELECT lev.kdo FROM stim_levier lev WHERE lev.dossier = cat.dossier)
    le champ "kdo" de la table "stim_levier" n'existe pas ... il s'appelle "article"
    donc forcément ça n'allait pas fonctionner !

    merci à tous pour votre aide

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Citation Envoyé par mdr_cedrick Voir le message
    en faite je viens de trouver la solution et vous n'auriez pas pu m'aider ...
    j'ai honte mais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT cat.kdo, cat.dossier
    FROM stim_catalogue cat
    WHERE cat.kdo NOT IN (SELECT lev.kdo FROM stim_levier lev WHERE lev.dossier = cat.dossier)
    le champ "kdo" de la table "stim_levier" n'existe pas ... il s'appelle "article"
    donc forcément ça n'allait pas fonctionner !

    merci à tous pour votre aide
    Nous aurions pu t'aider si tu avais suivi les Règles du forum Langage SQL à lire par tous qui précisent :
    5) Donnez les ordres SQL de création de vos tables (CREATE TABLE) ainsi que les INSERT d'un jeu de données basique afin que tout un chacun puisse reproduire ce que vous voulez faire sur son SGBDR afin de mieux vous aider.

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

Discussions similaires

  1. [MySQL] Problème avec NOT IN ?
    Par bahamut100 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/06/2010, 09h06
  2. Problème avec le not exists
    Par julrock dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/11/2007, 16h08
  3. Problème pour la Division avec NOT EXISTS
    Par myzu69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/11/2007, 14h50
  4. [PHPMyAdmin]Problème avec "Not Null" dans mysql 5
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/12/2005, 14h45
  5. Réponses: 6
    Dernier message: 17/04/2005, 10h58

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