我尝试使用术语表加入我的帖子表行,我的数据库帖子和数据库结构与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
可以通过一个查询获取所有这些信息,或者我应该首先查询帖子,然后尝试获取条款信息?
答案 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);
抱歉我的英文