从出租车标签系统的3个表中获取数据


Get data from 3 tables for toxi tagging system

这里有3个表,结构如下:

:

post_id | Post_name
---------+----------
1,,,,,,,,|,,测试发布
2,,,,,,,,|,,,印度

标记:

tag_id | tag_name
---------+------------
1,,,,,,,,|,,,java
2,,,,,,,,|,,,php

Tag_map:

tag_map只包含post和tag表中的外键。

post_id | tag_id
-----------+------------
1,,,,,,,,,,|,,,,1
1,,,,,,,,,,|,,,,2
2,,,,,,,,,,|,,,,1
2,,,,,,,,,,|,,,,2

我想从用户给出的特定post_id中获取数据。

有谁能帮我一下吗?我是php的初学者。

提前感谢。

您需要像下面这样连接数据,当文章在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
;