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 :

Pb Requete jointure (3 fois ?)


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Pb Requete jointure (3 fois ?)
    Bonjour,
    c'est mon premier post ici alors je vais essayer de faire ça correctement
    SGBD => mysql 4.1.8 mais c'est sans importance je pense à part qu'il gere les sous requetes.

    Je n'arrive pas à faire ma requête(c'est original non)
    2 tables DEMANDE et TYPE_BIEN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    DEMANDE                         TYPE_BIEN
    -----------                    -------------
    ID_DEMANDE                     ID_TYPE_BIEN
    ID_TYPE_BIEN1                  FR_TYPE_BIEN
    ID_TYPE_BIEN2 
    ID_TYPE_BIEN3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    avec des valeurs comme : 
     TYPE_BIEN                        DEMANDE
    =======                         ==========
    1|VILLA                           1| 2,3,1
    2|APPARTEMENT                     2| 1,2
    3[CHALET etc .....                3| 2,1,3
    Je pense que tous le monde à compris que pour la demande avec l'id 1 ,la demande concerne un appartement, un chalet ou une villa

    J'arrive pas du tout à imaginé et à faire la requete qui me retournera les noms(FR_TYPE_BIEN) pour chaque demande ....
    du style demande 1 : appartement : chalet : villa
    pour un champ ça me pose pas de soucis, mais pour les 3 champs ? Sous requete ? peut etre que c la l'heure qui me fait pas voir la solution , mais vraiment je vois pas

    Merci .....

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ce gende de modélisation est fortement déconseillée par la théorie...
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_demande, t1.fr_type_bien, t2.fr_type_bien, t3.fr_type_bien
    FROM demande d LEFT OUTER JOIN type_bien t1 ON d.id_type_bien1 = t1.id_type_bien
                   LEFT OUTER JOIN type_bien t2 ON d.id_type_bien2 = t2.id_type_bien
                   LEFT OUTER JOIN type_bien t3 ON d.id_type_bien3 = t3.id_type_bien
    En espérant que ta version de mySQL connait cette syntaxe pour les jointures externes...

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut MERCI
    Merci ça marche ....
    Si ce genre de jointure est déconseillé par la théorie...(ce que je comprend), comment peut on faire autrement ?

    c'est juste pour ma connaissance personel, histoire de faire des trucs plus "propre", j'aurais pu (peut etre du ?) faire le traitement dans PHP, mais je crois avoir lu que c'etait mieux de faire travaillé le SGBD plutot que le langage (peut etre que je me trompe) ?

    L'idee de la table "demande" était d' enregistrer les différent choix possible de logement souhaité par un client pour une "agence immobiliere" .

    MERCI ...

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ta solution revient à un attribut multivalué (donc pas en forme normale 1), si tu cherche les demandes concernant des biens d'un type précis, tu ne sais pas dans quelle colonne chercher !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DEMANDE           TYPE_BIEN           TYPE_BIEN_DEMANDE
    ----------        ------------        -----------------
    ID_DEMANDE        ID_TYPE_BIEN        ID_DEMANDE
    FR_DEMANDE        FR_TYPE_BIEN        ID_TYPE_BIEN
    .....             .....
    Solution plus souple, plus évolutive...

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ton explication , je comprend mieux maintenant pourquoi je n'arrivais pas a faire cette requete, c'est qqchose qu'on ne m'a pas appris, enfin que je devais certainement pas faire (mes souvenirs de sql sont un peu vieux), puisque comme tu l'as dit c'est pas une forme normale ...

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

Discussions similaires

  1. Requete Jointure Externe...Soucis!!
    Par paflolo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 11h25
  2. Requete envoyée 2 fois
    Par julure dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 04/08/2005, 09h27
  3. [requetes / Jointures externes] : expression de jointure
    Par Ptit_boeuf dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/07/2005, 16h42
  4. [Requete] jointure externe -> where
    Par MrDuChnok dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/07/2004, 15h48
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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