我有三个表tag,page,pagetag
有了下面的数据
页
ID NAME
1 page 1
2 page 2
3 page 3
4 page 4
Run Code Online (Sandbox Code Playgroud)
标签
ID NAME
1 tag 1
2 tag 2
3 tag 3
4 tag 4
Run Code Online (Sandbox Code Playgroud)
pagetag
ID PAGEID TAGID
1 2 1
2 2 3
3 3 4
4 1 1
5 1 2
6 1 3
Run Code Online (Sandbox Code Playgroud)
我想在单个查询中获取一个字符串,其中包含每个页面的对应标记名称.这是我想要的输出.
ID NAME TAGS
1 page 1 tag 1, tag 2, tag 3
2 page 2 tag 1, tag 3
3 page 3 tag 4
4 page 4
Run Code Online (Sandbox Code Playgroud)
这可能与SQL有关吗?
我正在使用MySQL.尽管如此,如果可能,我想要一个独立于数据库供应商的解决方案.
塞尔吉奥·德尔·阿莫:
但是,我没有得到没有标签的页面。我想我需要用左外连接编写查询。
SELECT pagetag.id, page.name, group_concat(tag.name)
FROM
(
page LEFT JOIN pagetag ON page.id = pagetag.pageid
)
LEFT JOIN tag ON pagetag.tagid = tag.id
GROUP BY page.id;
Run Code Online (Sandbox Code Playgroud)
这不是一个非常漂亮的查询,但应该给您您想要的内容 -pagetag.id并且group_concat(tag.name)将null针对您上面发布的示例中的第 4 页,但该页面应出现在结果中。
| 归档时间: |
|
| 查看次数: |
5426 次 |
| 最近记录: |