1

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

清除示例:

发布表:

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

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

4

5 回答 5

1

使用 mysql 的 GROUP_CONCAT 函数,它将多行连接到单行,但将结果作为逗号分隔的字段提供给您。

于 2012-05-04T06:19:18.833 回答
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
于 2012-04-29T18:58:24.820 回答
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
于 2012-04-29T18:59:51.227 回答
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
于 2012-04-29T19:00:08.703 回答
0

你需要它做什么?我认为使用一个查询来获取它会适得其反。

为什么不使用两个查询?

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

对不起我的英语不好

于 2012-04-29T19:07:08.290 回答