【发布时间】:2012-12-15 01:39:24
【问题描述】:
我有三个 MySQL 表,一个带有数据,一个带有标签,一个带有这两者之间的关联,这似乎是存储标签时的常见做法。表格如下所示:
links:
+----+------------+------------+
| id | url | added |
+----+------------+------------+
| 2 | google.com | 2012-12-14 |
| 3 | cnn.com | 2001-02-13 |
+----+------------+------------+
tags:
+----+--------+
| id | tag |
+----+--------+
| 1 | search |
| 2 | news |
+----+--------+
taglink:
+----+--------+-------+
| id | linkid | tagid |
+----+--------+-------+
| 1 | 2 | 1 |
| 2 | 3 | 1 |
| 3 | 3 | 2 |
+----+--------+-------+
我想收到的是下表:
+----+------------+------------+--------+-------------+
| id | url | added | tagids | tags |
+----+------------+------------+--------+-------------+
| 2 | google.com | 2012-12-14 | 1 | search |
| 3 | cnn.com | 2001-02-13 | 1,2 | search,news |
+----+------------+------------+--------+-------------+
为此,我有这个查询:
select
links.*,
group_concat(taglink.id) as tagids,
group_concat(tags.tag) as tags
from links
join taglink on taglink.linkid=links.id
join tags on tags.id=taglink.tagid
但这给了我一个使用每个标签的单行,就像这样:
+----+------------+------------+--------+-------------+
| id | url | addad | tagids | tags |
+----+------------+------------+--------+-------------+
| 2 | google.com | 2012-12-14 | 1,2 | search,news |
+----+------------+------------+--------+-------------+
一切似乎都被分组了,这不是我想要的。有人知道解决办法吗?
【问题讨论】:
-
请考虑接受您提出的一些问题的答案。点击最佳答案旁边的绿色复选框。
-
我对每个回答我的问题的答案都这样做......在我在这里写一个问题之前我做了很多搜索......我正在尽我所能帮助这个伟大的社区可以;-)