2014-12-07 4 views
0

주 행을 포함하는 테이블이 하나 있는데이 모든 행이 필요합니다. 그럼 거기에 일치하는 행이 없을 수 있습니다 2 테이블이 있지만 여전히 이러한 테이블에 대해 일치하는 행이없는 경우 기본 테이블에서 행 싶어요.SQL 트리플 조인 테이블의 일부 행이 존재하지 않을 수 있습니다.

이 쿼리는 작동하지만 3 개의 테이블 모두에 행이 없으면 아무것도 반환되지 않습니다. PHP PHP와 MySQL을 사용하여.

SELECT PS_Info.* , PS_Guides.Guide, PS_User.UserID FROM PS_Info 
JOIN PS_Guides ON PS_Info.ID = PS_Guides.InfoID 
JOIN PS_User ON PS_Info.ID = PS_User.InfoID 
WHERE PS_Info.GameID = :ID AND PS_User.UserID = :UserID 

PS_Info에있는 목록을 표시하려고합니다. 그런 다음 사용자가 숨김 (PS_User = UserID, InfoID)으로 설정 한 경우 이러한 항목 중 일부를 숨기려고합니다. PS_User에 아무 것도 없으면이 항목을 숨기도록 설정하지 않았으므로 표시하고 싶습니다. PS_Guides에는 목록의 각 항목에 대한 추가 정보가 들어 있습니다. 모든 항목에 추가 정보가 들어있는 것은 아니므로이 표에 행이 없으면 표시하지 않습니다.

+0

완벽하게! 고맙습니다! –

답변

2
SELECT PS_Info.* , PS_Guides.Guide, PS_User.UserID FROM PS_Info 
left JOIN PS_Guides ON PS_Info.ID = PS_Guides.InfoID //use left join 
left JOIN PS_User ON PS_Info.ID = PS_User.InfoID //use left join 
WHERE PS_Info.GameID = :ID AND PS_User.UserID = :UserID 
+0

이 문제는 완전히 해결되지는 않았습니다. PS_Info.GameID = : ID 및 PS_User.UserID = : UserID 또는 PS_User.UserID가 NULL 인 경우에도 추가해야했습니다. –

2

'왼쪽 가입'을 찾고 있습니다.

SELECT PS_Info.* , PS_Guides.Guide, PS_User.UserID FROM PS_Info 
LEFT JOIN PS_Guides ON PS_Info.ID = PS_Guides.InfoID 
LEFT JOIN PS_User ON PS_Info.ID = PS_User.InfoID 
WHERE PS_Info.GameID = :ID AND PS_User.UserID = :UserID 
관련 문제