私は3つのMySQLテーブルを持っています。1つはデータ、もう1つはタグ、もう1つはこれら2つの間の関連付けです。これは、タグを保存するときの一般的な方法のようです。テーブルは次のようになります。
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 |
+----+------------+------------+--------+-------------+
すべてがグループ化されているようですが、それは私が探していたものではありません。誰かが解決策を知っていますか?