从toxi标记系统的3个表中获取数据

时间:2014-06-03 12:41:51

标签: php mysql

这里我有3个表格,结构如下。

发表:

post_id | Post_name
--------- ---------- +
1 |测试岗位 2 |印度

标签:

tag_id | TAG_NAME
--------- ------------ +
1 | java的
2 | PHP

Tag_map:

tag_map仅包含来自帖子和标签表的外键。

post_id | TAG_ID
----------- ------------ +
1 | 1
1 | 2
2 | 1
2 | 2个

我想从用户提供的特定post_id中获取数据。

任何人都可以帮我吗???我是一个非常初衷的PHP ..

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要按以下方式加入数据,当帖子在tag_map

中有多个标记时,这会返回多行数据
select 
p.post_id ,
p.Post_name,
t.tag_name 
from tag_map tm 
join Post p on p.post_id = tm.post_id
join Tag t on t.tag_id = tm.tag_id
where p.post_id = 'some id';

要获取每个帖子的单行数据以及所有标记为逗号分隔,您需要使用group_concat()作为

select 
p.post_id ,
p.Post_name,
group_concat(t.tag_name) as tag_name
from tag_map tm 
join Post p on p.post_id = tm.post_id
join Tag t on t.tag_id = tm.tag_id
where p.post_id = 'some id'
group by p.post_id
;