php - 可以合并4张 table 吗?

标签 php mysql

我需要查询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

Demo Here

关于php - 可以合并4张 table 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559544/

相关文章:

php - 注册时设置名称

php - 如何在codeigniter中计算数据库中的行总数

php - 为什么创建自定义 PDO 查询处理程序是愚蠢的?

Mysql Procedure Error (execute command denied to user)

php - 奇怪的错误: Not on any other page with same code on lines

MySQL 数据库更改跟踪

php - 如果 id 匹配,则从 mysql 中选择行

php - 单击按钮时转到下一页并刷新上一页 Jquery Mobile

php - 使用 jquery 自动完成在文本框中提供多个值建议

MySQL子查询引用其范围之外的表