[SQL] Problème requete multi table

Statut
N'est pas ouverte pour d'autres réponses.
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 :



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 ?
 
1er
OP
the_quent1

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 ?
 

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).

^^ suis pas expert hein :) Sinon tu fais peter la db et je te donnes une query qui fait ce que tu cherches :)
 

ozilrit

Elite
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​
 
1er
OP
the_quent1

the_quent1

Elite
Ahhhh mais oui les fameux INNER JOIN ^^
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
 

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)
 

zoheir

cvm.mangaleet()
nan ca c'est caca
 

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
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut