如何加入帖子与术语一个查询?

时间:2012-04-29 18:54:21

标签: php mysql sql join

我尝试使用术语表加入我的帖子表行,我的数据库帖子和数据库结构与wordpress相同,我不知道如何连接多行的一行;

CLEAR示例:

帖子表:

post_id
post_title
post_content
post_dateline
post_owner

条款表:

term_id
term_name
term_title
term_type

term_relationships表:

post_id
term_id

现在我有: 一个id值为3的帖子; 三个具有id值的术语(4,6,7)

term_relationships行如:

  post_id      term_id
     3            4
     3            6
     3            7

可以通过一个查询获取所有这些信息,或者我应该首先查询帖子,然后尝试获取条款信息?

5 个答案:

答案 0 :(得分:1)

使用mysql的GROUP_CONCAT函数,它会将多行连接到一行,但会将结果作为逗号分隔字段。

答案 1 :(得分:0)

您要查找的联接类型是LEFT JOIN。像这样:

Select * from post p
left join term_relationships r on r.post_id = p.id
left join terms t on t.term_id = r.term_id

答案 2 :(得分:0)

如果我理解您的要求,请尝试:

select * from post_table p
left join terms_table t on p.post_id = t.term_id

或者,另一种选择可能是:

select *, (select term_id from term_table where term_id=p.post_id) from post_table p

答案 3 :(得分:0)

使用映射表开始连接,并在两个表上使用左连接添加数据?

SELECT * FROM  term_relationships 
 LEFT OUTER JOIN terms ON term_relationships.term_id = terms.term_id 
 LEFT OUTER JOIN posts ON term_relationships.post_id = posts.post_id

答案 4 :(得分:0)

你需要什么?我认为使用一个查询来获取它是非常有效的。

为什么不使用两个查询?

SELECT * FROM posts;
SELECT * FROM terms WHERE term_id IN (SELECT term_id FROM term_relationships WHERE post_id = $post_id);
  

抱歉我的英文