2010-12-14 13 views
0

Dire que j'ai la configuration suivanteSQL renvoyant les résultats agrégés d'une table comme une colonne dans une requête

---Posts--- 
|id 
|Title 
----------- 

---Comments--- 
|id 
|postid 
|comment 
----------- 

Certaines Mock données

Posts 
ID  Title 
1   Hello World 
2   Good Bye 
3   Pepsi 

Comments 
ID  postid  comment 
1  1   comment 1 
2  2   comment 2 
3  2   comment 3 

Je veux revenir le titre de la table Messages et tous les commentaires liés à celui-ci via l'ID dans le tableau des commentaires.

Quelque chose comme.

Title   Comment 
Hello World  comment1 
Good Bye  comment2 
       comment3 
Pepsi   null 

Est-ce possible en utilisant SQL?

Répondre

1
Select Title, 
     (SELECT GROUP_CONCAT(Comment) FROM Comments 
     WHERE 
     Comments.postid=posts.posts) as comments 
FROM posts 
0
Select Title, Comment 
from Posts p LEFT Join Comments c on c.PostId = p.id 
Order by 1 

Cependant le titre sera répété, ce résultat sera:

Title   Comment 
------------------------ 
Hello World  comment1 
Good Bye  comment2 
Good Bye  comment3 
Pepsi   null 
0

SELECT posts.title, comments.comment de messages REJOIGNEZ Commentaires sur posts.id = comments.postid