我需要查询4个表的数据。我不确定这是解决这个问题的最佳数据库设计。这是简化版本。实际的表格有更多列。我有一个用于上传歌曲的用户的表格:
Id | Username |
---------------
1 | John |
2 | Michael |
3 | Frank |
然后我有这样的歌曲表
Id | Title | UserId
----------------------
1 | Title 1 | 1
2 | Title 2 | 1
3 | Title 3 | 2
4 | Title 4 | 2
然后是这样的播放列表
Id | Title | UserId
------------------------
1 | My Playlist | 3
然后是用户保存歌曲 ID 属于播放列表的播放列表条目
Id | SongId | PlaylistId
--------------------------
1 | 2 | 1
2 | 4 | 1
3 | 3 | 1
查询后我想要实现的是这样的:
Playlist | By | Song List
------------------------------------------------------------
My Playlist | Frank | Title 2 - John, Title 3 - Michael,
| | Title 4 - Michael
-------------------------------------------------------------
知道如何在 MySQL 中查询这个。或者有更好的表格设计来达到相同的结果?
最佳答案
试试这个:
SELECT
p.Title as Playlist,
u1.Username as By,
group_concat(s.Title, ' - ', u2.Username order by s.Id) as `Song List`
FROM playlist p
JOIN playlist_entries pe
ON p.Id= pe.PlaylistId
JOIN song s
ON pe.SongId = s.Id
JOIN user u1
ON p.UserId = u1.Id
JOIN user u2
ON s.UserId = u2.Id
关于php - 可以合并4张 table 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559544/