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 :

Je tourne en rond....


Sujet :

Langage SQL

  1. #1
    Ol
    Ol est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Je tourne en rond....
    : Je n'arrive à rien ! Voici la requête que j'aimerai construire :

    Table des lecteurs :
    Lecteur
    ---------
    1
    2
    3
    4
    5

    Table des Livres :
    Livre
    ------
    A
    B
    C
    D
    E
    F
    G

    Table des Sujets traités :
    Sujet
    ------
    v
    w
    x
    y
    z

    Table des Sujets par Livre :
    Livre Sujet
    ----- -------
    A w
    A x
    A y
    B y
    B z
    C z
    D x
    E y
    F w

    Table des Lecteurs par Livre :
    --------------------------------
    Livre Lecteur
    ----- --------
    A 1
    C 1
    C 3
    D 5
    B 5
    G 1

    J'aimerai pouvoir sélectionner les lecteurs ayant abordé au moins une fois les sujets x, y et z (les trois), quelquesoit le ou les livres
    Merci pour votre aide, je n'arrive à rien et je m'embrouille à en perdre mes pauvres bases !
    OL

  2. #2
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Je pense qu'avec cette requête, tu arriveras au résultat recherché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT tab_lecteur_livre.lecteur
    FROM tab_lecteur_livre, tab_livre, tab_livre_sujet
    WHERE tab_lecteur_livre.livre = tab_livre.livre
      AND tab_livre.livre = tab_livre_sujet.sujet
      AND tab_libre_sujet.sujet IN ('x', 'y', 'z')
    Je n'ai mis ici que les tables nécessaires pour remonter uniquement une liste d'identifiants. Pour remonter des informations relatives au lecteur, il te faudra rajouter une jointure vers la table lecteur. Même remarque pour les sujets

  3. #3
    Ol
    Ol est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.
    Je ne crois pas que ce soit bon : cette requête va me donner les lecteurs ayant aussi traité un seul des 3 sujets ( in (x,y,z))... alors que je voudrais que les lecteurs sélectionnés aient traité les 3 sujets (x and y and z). Ils peuvent les avoir traités dans un nombre de livres quelconque, une ou plusieurs fois, en même temps que d'autres sujets, mais tous au moins une fois ces trois là.
    Je cherche encore....
    Merci !

  4. #4
    Ol
    Ol est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Réponse
    Une autre demande m'a éclairé (les propriétaires de voitures de couleurs x, y et z...)
    Voici une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select distinct LL.lecteur
             from livre_lecteur LL
             inner join livre_sujet LS 
                     on LS.livre = LL.livre
             where 
                     LS.sujet in ('x', 'y', 'z')
             group by LL.lecteur
             having 
                     count(distinct LS.sujet) = 3
    OL

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

Discussions similaires

  1. Ca tourne en rond avec FileUpload
    Par Attila50 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 27/05/2007, 09h11
  2. Réponses: 4
    Dernier message: 21/07/2006, 10h58
  3. Quetion de débutant ... bête mais je tourne en rond
    Par JohnQc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/04/2006, 17h39
  4. Requete qui tourne en rond
    Par hugo69 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 20h02
  5. Prog qui tourne en rond :-(
    Par FranckDev dans le forum CORBA
    Réponses: 2
    Dernier message: 07/09/2005, 13h50

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