Bonjour Bonsoir,
Je suis entrais de travailler sur un forum mais je rencontre un petit prôbléme lors que je veux récupperais les commentaire poster sur le topic.
Donc j'ai 3 table la 1er qui stocke les info sur le membre la 2eme le topic et la 3eme qui stocke les commentaire du topic, j'ai fait une jointure en sql mais il m'affiche en deux foit choque commentaire.
code sql :
// selectinnez les message poster sur le topic.
$reqcomment = $bdd->query('SELECT commentaire_topic.*, membre.*, topic.* FROM commentaire_topic, membre, topic WHERE commentaire_topic.id_topic = topic.id_topic1');
et pour afficher les commentaire je fait un while :
$commentaire = $reqcomment->fetch()
si vous pouvez m'aider sa serais simpas de votre part merci.
J'ai mis
"
DISTINCT
"
après le mot SELECT mais rien ne changer puis avec
Oracle
il m'affiche une erreur
J'ai remarqué que en plus des doublons il affiche le même commentaire sur tous les topic.
Ta table commentaire-topic est reliée à ta table topic mais ta table membre n'est reliée à rien, donc ça te fait un produit cartesien.
Il faut relier un commentaire au membre qui la posté.
Tu peux donner les structures de tes tables.
Mais je vois déjà 2 erreurs dans la requête SQL,
Déjà le jointure non explecite c'est mal, et là si je me trompe pas c'est du cross join donc multiplicateur, il faut du inner joint
si je réecrit ta requête comme il faudrat ça donne ça:
SELECT commentaire_topic.*, membre.*, topic.*
FROM commentaire_topic
inner join topic on commentaire_topic.id_topic=topic.id_topic1
inner join membre on ..... quoi? manque la condition de jointure
salut,
avec ce code il m'affiche chaque message une fois mais il me l'affiche sur tous les page même si je fait comme toi :
commentaire_topic.id_topic = topic.id_topic1
La requête est incomplete.
d'ou la question "Tu peux donner les structures de tes tables." ainsi ce que tu veux faire
Voila ce que j'ai mis dans la partie incompléte mais il m'affiche t'oujour tous les commentaire:
commentaire_topic.id_user = membre.id
C'est La PK de la table mais il à bien une valeur unique.
Là tu dis sur quel champ il fait la liaison (uniquement)
Je te donne un exemple avec juste une petite différence, mais qui change énormément le résultat
Exemple 1
Select commentaire.*,user.* from commentaire
inner join user on commentaire.user_id=user.id
inner join topic on topic.id= commentaire.topic_id
where user.login="kadevland" and commentaire.titre="Cours SQL"
Je veux tous les commentaires de kadevland pour le topic dont le titre est Cours SQL
Exemple 2
Select commentaire.*,user.* from commentaire
inner join user on commentaire.user_id=user.id
inner join topic on topic.id= commentaire.topic_id
where commentaire.titre="Cours SQL"
Je veux tous les commentaires (avec les informations des auteurs) pour le topic dont le titre est Cours SQL
si tu précises pas "les limites" cad where c'est normal que tu es tous
IL faut pas confondre synification et valeur, c'est comme en POO la définition de la class et l'instance.