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 éclairé 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
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

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

  3. #3
    Membre éclairé 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
    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
    Membre Expert

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

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    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
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 191
    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 191
    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
                         )
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Membre éclairé 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
    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 Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    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 éclairé 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
    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 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    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.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

+ 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