2016-07-25 33 views
0

我需要從4個表中查詢數據。我不確定這是最好的數據庫設計來解決這個問題。這是簡化版本。實際的表有更多的column.I有表用戶上傳的誰他們的歌聲:是否可以組合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查詢此。或者更好的桌子設計來達到理智的效果?

+0

我們需要更多的信息,給你準確的答案,請參閱http://stackoverflow.com/help/how-to-ask –

回答

0

試試這個:

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

+0

正是我需要的。非常感謝@JPG –

相關問題