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 :

Requete SQL "in"


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut Requete SQL "in"
    Bonjour,

    Je ne comprends pas pourquoi la requête ci dessous ne fonctionne pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Select Distinct tbEmplacements.IDEmplacement, tbEmplacements.Code
    From tbEmplacements, tbStock, tbBalles
    Where (tbEmplacements.IDEmplacement not in (4)) 
     
     
    Select Distinct tbEmplacements.IDEmplacement
    From tbEmplacements
    Voici un résultat intermédiaire :


    Si quelqu'un peut me corriger et m'expliquer, merci !

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    J'ai pas vraiment compris ce qui ne marche pas.

    Mais une requête sur 3 tables sans jointures, c'est plutot curieux non ?

  3. #3
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    j'ai simplement montré un résultat intermédiaire mais c'est bien la premiere requete qui ne me sort aucun résultat alors que vu le résultat de la requete 2 je devrais en obtenir...

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Si tu parles bien de la première requête, je dirais que tbStock ou tbBalles est vide.

  5. #5
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    Oui tu as raison...
    Mais je ne comprends pas pourquoi... ces 2 tables n'entrent pas dans la condition, elles ne sont que dans le from.... alors en quoi influencent-elles le résultat ?

    Comment puis-je corriger le problème, en sachant que la requete complète est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Distinct tbEmplacements.IDEmplacement, tbEmplacements.Code, tbBalles.IDClient
    From tbEmplacements, tbStock, tbBalles
    Where (tbEmplacements.IDEmplacement = tbStock.IDEmplacement AND tbStock.IDBalle = tbBalles.IDBalle AND tbBalles.IDClient = tbBalles.IDClient) OR
    	  (tbEmplacements.IDEmplacement not in (select distinct IDEmplacement from tbStock))
    La deuxième condition est correcte et me renvois quelque chose, la première par contre ne me renvoit rien.... Comment puis-je adapter la requête...

  6. #6
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    J'ai l'impression que le OR ne joue pas son rôle...

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Il faut que tu utilises une jointure externe (qui m'a l'air de correspondre à ce que tu essaies de faire avec OR).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT tbEmplacements.IDEmplacement, tbEmplacements.Code, tbBalles.IDClient 
    FROM tbEmplacements AS E
      LEFT OUTER JOIN tbStock AS S 
        ON E.IDEmplacement = S.IDEmplacement 
      INNER JOIN tbBalles 
        ON tbBalles.IDClient = tbBalles.IDClient
        -- j'ai repris ta condition de jointure telle quelle, 
       -- mais je doute qu'elle filtre grand-chose !
    

  8. #8
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    J'ai résolu le problème, j'ai du utilisé un curseur pour faire exactement ce que je souhaitais...

    Merci !

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    un curseur à la place d'une jointure externe ??? tes descendants en rougiront de honte jusqu’à la dixième génération !

  10. #10
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    Après avoir ré exposé le problème, je pense que c'était bien la meilleur solution... j'avais mal posé mon problème :-)

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    quel que soit le problème, les curseurs sont toujours la pire solution !
    cf en particulier http://sqlpro.developpez.com/cours/s...r_avoidCursor/

    Antoun, conseils ensemblistes et anathèmes intégristes en tous genres

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

Discussions similaires

  1. [MySQL] Problème de quote dans une requete sql
    Par berew dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 05/04/2012, 22h33
  2. [Tableaux] quotes dans requete sql
    Par taki_38 dans le forum Langage
    Réponses: 5
    Dernier message: 11/07/2006, 16h09

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