[SQL] Problème requete multi table

Discussion dans 'Web, design' créé par the_quent1, 29 Avril 2009.

Statut de la discussion:
Fermée.
  1. Offline
    the_quent1 Elite
    Bonjour,

    je me casse la tête sur quelque chose et j'ai besoin d'un regard neuf sur tout ça, je fais donc appel à vous.

    Une illustration vaut p-e mieux qu'un long discoure donc voici le schéma d'une parti de ma BDD :

    [IMG]

    Donc j'explique :
    * Un user pose un problème ... ensuite ;
    * Un user répond au problème du précédent problème.

    Ça fait une petite boucle.

    Plusieurs problèmes/réponses peuvent être posé en même temps donc je passe par des tables pour identifier l'id du user qui post, du problème et de la réponse.

    Il n'y a qu'un problème pour plusieurs solutions.

    Imaginons que :
    * idProbleme = 1
    * idReponse = 7 ; 8 ; 9 (donc ici 3 réponse posté pour le problème 1)

    Comment faire pour afficher toutes les réponse du problème 1 ?
    the_quent1, 29 Avril 2009
    #1
  2. Offline
    the_quent1 Elite
    Petit bug vu la grandeur de l'image (je pensais pas qu'elle serait si grande :s et je ne sais pas éditer (pq ? aucune idée)

    Donc je retape le texte ici, pcq une partie est manquante :

    Donc j'explique :
    * Un user pose un problème ... ensuite ;
    * Un user répond au problème du précédent problème.

    Plusieurs problèmes/réponses peuvent être posé en même temps donc je passe par des tables pour identifier l'id du user qui post, du problème et de la réponse.

    Il n'y a qu'un problème pour plusieurs solutions.

    Imaginons que :
    * idProbleme = 1
    * idReponse = 7 ; 8 ; 9 (donc ici 3 réponse posté pour le problème 1)

    Comment faire pour afficher toutes les réponse du problème 1 ?
    the_quent1, 29 Avril 2009
    #2
  3. Offline
    Switch Elite
    Dans ta table de Reponse tu crées une colonne idProbleme_ID dans laquelle tu mets la valeur qui se trouve dans ID de ta table problème.

    Ensuite tu as ton

    Select *
    From Reponse (=table des réponses)
    Where idProbleme_Id = 1

    Il te répondra 3 lignes (7, 8 et 9).

    :p suis pas expert hein :) Sinon tu fais peter la db et je te donnes une query qui fait ce que tu cherches :)
    Switch, 29 Avril 2009
    #3
  4. Offline
    ozilrit Touriste
    Qqch comme :
    SELECT * FROM `réponses` `r` INNER JOIN `réponses_problème` `rp` ON `r`.`id` = `rp`.`id-réponse` AND `rp`.`id-problème` = 1
    ozilrit, 30 Avril 2009
    #4
  5. Offline
    ozilrit Touriste
    ozilrit, 30 Avril 2009
    #5
  6. Offline
    the_quent1 Elite
    Ahhhh mais oui les fameux INNER JOIN :p
    Parfait, ca fonctionne :p

    PHP:
                                      
     SELECT count
    (*) FROM Reponse INNER JOIN Reponse_has_Probleme ON Reponse.idReponse Reponse_has_Probleme.Reponse_idReponse  AND Reponse_has_Probleme.Probleme_idProbleme 1
    Merci bcp Ozilrit
    the_quent1, 30 Avril 2009
    #6
  7. Offline
    deus666 Touriste
    Ouais inner_join ou

    SELECT * FROM `réponses` `r` where `r.id in (select rp.id from réponses_problème where rp`.`id-problème` = 1)
    deus666, 30 Avril 2009
    #7
  8. Offline
    zoheir cvm.mangaleet()
    nan ca c'est caca
    zoheir, 30 Avril 2009
    #8
  9. Offline
    guslinux Gamerz'ien
    Le INNER JOIN et LEFT JOIN rien de tel pour la lisibilité du code SQL ...

    Quand t'arrive pas à avoir ce que tu veux avec ça ... tu passes aux sous-requêtes :-D
    guslinux, 9 Mai 2009
    #9
Statut de la discussion:
Fermée.