2011-01-06 41 views
0
SELECT thread.id AS p_id, post.title, post.content, author.username, author.id AS a_id 
         FROM thread INNER JOIN author 
         ON author_id = author.id 
         ORDER BY thread.created DESC 
         LIMIT $start, 30 

我有一个表称为posts,posts_id和tags。在php中的内部联接

如何扩展上述SQL语句以使用INNER JOINS,...或其他方式获取与每个帖子相关的所有标签?

+0

在该查询中定义的'post'表在哪里? YOu现在不能选择“post.title”或“post.content”,因为没有POST表/别名 – 2011-01-06 06:27:44

+0

我认为他的意思是写SELECT语言,我以前在某处看过这个查询,也许它的复制和粘贴 – jonnnnnnnnnie 2011-01-06 06:30:49

回答

0

选择thread.id AS的p_id,post.title,post.content,author.username,AS A_ID author.id来自线程 LEFT JOIN笔者就AUTHOR_ID = author.id LEFT JOIN标签ON tags.thread_id = thread.id ORDER BY thread.created DESC LIMIT $开始,30

Sanil

+0

是不是这只是同一件事...? – jonnnnnnnnnie 2011-01-06 06:33:30

2

试试这个(假设表标签信息是标签和具有的thread_id列):

SELECT thread.id AS p_id, 
      post.title, 
      post.content, 
      author.username, 
      author.id AS a_id, 
      GROUP_CONCAT(DISTINCT tag_name ORDER BY tag_name DESC SEPARATOR ',') AS tags 
FROM thread INNER JOIN author 
ON author_id = author.id INNER JOING TAGS 
ON thread.id = tags.thread_id 
GROUP BY thread.id 
ORDER BY thread.created DESC 

LIMIT $start, 30 

编辑:移动GROUP由一行。