首先,我不确定是否可以在 1 个查询中完成此操作,但我确实希望如此。
我有这些表:
artist
- id
- name
track
- id
- title
track_artist
- track_id
- artist_id
(with UNIQUE index on the combined columns)
一个轨道可以有多个艺术家,一个艺术家可以有多个轨道,因此它们都使用联结表具有多对多关系。
现在我想要有关 Track #1 的信息,包括某种形式的数组(作为该记录中的值,可能名为 artists
),其中包含与该轨道相关的所有艺术家记录。
伪代码最终应该看起来像这样:
- id : 1
- title : "example Track Title"
- artists :
[
- id : 1
- name : "Foo Artist Name"
],
[
- id : 2
- name : "Bar Artist Name"
]
这可能吗?如果没有,最好的方法是什么?
最佳答案
是的,您可以使用以下查询来完成此操作
Select t.id,t.tital , group_concat(a.name) as artist name
from track t join track_artist ta on t.id=ta.track_id inner join
artist a on a.id=ta.artist_id group by t.id
关于Mysql 使用连接表选择每个轨道的多个艺术家记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38141624/