将所有链接表条目连接到一行中

vhmi4jdf  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(341)

我一直试图得到一个查询,这将允许我把一个事件(链接表)的所有音乐流派在一个单一的行,但我一直很失败,迄今为止;它不断地返回两行,每行都有相同的事件信息,但是在左连接处更改了音乐类型条目。我的问题是:

SELECT 
    events.*
    , music_genres_link.* 
FROM events 
LEFT JOIN music_genres_link 
    ON events.id = music_genres_link.event_id 
WHERE events.id=1 
ORDER BY date DESC

它的回报是:

我怎么把这两排放在一排呢?我需要类型标题和类型id列。
我想将整个事件行和左连接到结果左侧链接表中找到的所有音乐类型,如下所示:
【事件结果】【音乐类型1(id,标题)】【音乐类型2(id,标题)】等

ruyhziif

ruyhziif1#

似乎有两行与联接匹配 music_genres_link . 你可以从两个'gender_id'值-5和295中看到这一点。
好了,现在您已经编辑了您的问题,您想要的是一些不典型的sql。你可以用pivot来实现这一点,但是你没有类型数量的限制,我也不推荐。你需要重新考虑你的table和你想要达到的目标。

ioekq8ef

ioekq8ef2#

我猜你只是想 group_concat() :

SELECT e.*, GROUP_CONCAT(mgl.genre_title) as genres
FROM events e LEFT JOIN
     music_genres_link mgl
     ON e.id = mgl.event_id 
WHERE e.id = 1 
GROUP BY e.id;

这假设您想要 genre_title 只是。如果你想要 genre_id ,则可以添加另一列。

相关问题