2011-03-28 4 views
0

Je vais essayer de garder cela simple et précis. Essentiellement, j'ai un fil de nouvelles, et une section de commentaires. La section des commentaires comporte deux niveaux: les réponses et les réponses aux réponses. Fondamentalement structuré comme tel pour un poste de nouvelles donné:Avoir quelques problèmes avec une requête mysql tirant des données de plusieurs tables ... question logique

-> comment 

---> reply 

---> reply 

Chaque commentaire peut avoir plusieurs réponses. Évidemment, la fausse façon de le faire est de faire une requête SQL pour chaque commentaire pour vérifier les réponses et les lister. EDIT Les commentaires ont seulement 1 niveau de réponses, c.-à-d. Que les réponses NE PEUVENT PAS avoir de réponses. - Merci JohnP

Mes questions pour ce genre de requête:

Dois-je conserver les commentaires et les réponses dans des tableaux distincts et d'utiliser un JOIN, ou puis-je conserver les réponses et les commentaires dans la même table et utiliser un qualificatif séparer le type? Dois-je essayer de les trier en utilisant la requête ou de rassembler toutes les données dans un tableau et de trier l'affichage & de cette façon?

Ma table est actuellement comme suit:

ID (unique, auto increment) 
NEWS_ID (ties the comment to a particular news post) 
REPLY_ID (ties the comment to a parent comment if it is a reply to another comment) 
USER_ID 
BODY 
PUBLISHED_DATE 

Toutes les suggestions de plus sages que moi serait grandement appréciée! Je suis encore au tout début de la compréhension complète de JOINS et d'autres structures de requêtes mysql de plus haut niveau. (IE: Je sucent mysql, mais l'apprentissage im :)

+0

Les commentaires/réponses sont-ils uniquement imbriqués dans un niveau? Sens, les réponses peuvent-elles avoir des réponses? – JohnP

+0

Merci JohnP pour la réponse: Nous limitons les commentaires à 1 niveau de réponses (donc non, les réponses ne peuvent pas avoir de réponses). –

Répondre

0

Puisque vous avez dit les réponses sont un niveau profond ..

je faire des commentaires 1 table et ont un champ comment_id pour désigner la propriété et un champ à news_id ajouter la relation à l'élément de nouvelles. De cette façon, vous pouvez simplement demander tous les commentaires qui correspondent à news_id et le trier par comment_id. Et puis un petit peu de magie de tableau PHP vous obtiendrez une liste triée de commentaires/réponses.

Donc, en regardant votre table actuelle, vous êtes sur le bon chemin.

+0

Merci beaucoup JohnP! Cela fait des tonnes de sens. Pour un problème donné, il existe une solution incroyablement simple qui une fois trouvé ou donné me fait claquer la tête sur le bureau à quel point il est évident. Très appréciée! –

Questions connexes