2016-07-25 3 views
0

4 개의 테이블에서 데이터를 쿼리해야합니다. 나는 이것이 이것에 접근하는 데 가장 좋은 DB 디자인이라고 확신하지 못한다. 이것은 단순화 된 버전입니다.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 
같은 재생 목록 테이블 같은 노래 테이블이 : 실제 표는 더 column.I 자신의 노래를 업로드하는 사용자를위한 테이블이 있습니다

그런 다음 사용자 저장 노래 ID가 재생 목록에 속하는 재생 목록 항목

Id | SongId | PlaylistId 
    -------------------------- 
    1 | 2  | 1 
    2 | 4  | 1 
    3 | 3  | 1 
MySQL은이를 조회하는 방법

Playlist | By | Song List 
    ------------------------------------------------------------ 
    My Playlist | Frank | Title 2 - John, Title 3 - Michael, 
       |  | Title 4 - Michael 
    ------------------------------------------------------------- 

어떤 생각 : 17,451,515,

는 내가 쿼리 후 달성하고자하는 것은이 같은 것입니다. 아니면 더 좋은 테이블 디자인으로 정상적인 결과를 얻을 수 있을까요?

+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 –

관련 문제