私の質問はMySQLにかなり似ています:複数の行をgroup_concatすることは可能ですか? 、しかし、グループ連結がどのように機能しているかについて頭を悩ませることはできません。
私の実際のデータセットを説明するのは難しいでしょう - 単純化されたテーブルとリレーションシップのセットを例として使用します。
テーブルがあると言うphotos
id filename
1 bob.jpg
2. ken.png
3. lisa.jpg
4. jim.jpg
...
とテーブルtags
id title
1 family
2 friends
3 school
4 california
...
と呼ばれる橋とphoto_tags
photo tag
1 2
1 3
1 4
2 1
3 1
そして、私はこのような行を戻したい:
photo_id filename tags
1 bob.jpg 2,3,4
2 ken.png 1
3 lisa.jpg 1
4 jim.jpg (NULL)
また...
photo_id filename tags
1 bob.jpg friends,school,california
2 ken.png family
3 lisa.jpg family
4 jim.jpg (NULL)
私の最初の推測は次のようなものでした:
SELECT photos.filename,
GROUP_CONCAT(photo_tags.tag) AS associated_tags
FROM photos
LEFT OUTER JOIN tags
ON tags.photo = photos.id
GROUP BY photo_tags.tag
しかし (おそらく、彼らが何をしているのかを知っている人には明らかでしょう)、それはうまくいきませんでした。いくつかの調査を行い、上記のリンクを参照した後、これのさまざまな順列を試しました。
SELECT
file_name,
GROUP_CONCAT(photo_tag_ids) AS associated_tags
FROM (
SELECT
photos.filename AS file_name,
photo_tags.tag AS photo_tag_ids
FROM
photos
INNER JOIN photo_tags
ON photo_tags.photo= photos.id
) whatever
GROUP BY file_name
ORDER BY file_name;
ティア。