세 번째 테이블이 다른 두 테이블을 조인 할 쿼리를 작성하려고합니다. 문제는이 첫 번째 테이블의 다른 버전이 있기 때문에 테이블 1의 열을보고 조인 할 올바른 테이블을 선택하는 쿼리가 필요하지만 결과 쿼리는 테이블 1의 모든 행을 반환해야합니다. WHERE 절을 만나는 특정 행 이것도 가능합니까?첫 번째 테이블의 내용을 기반으로 테이블에 가입하십시오.
예 :
표 1 = 사용자
표 2 = 배너
표 3 =의 UserSettings 또는 AdminSettings 또는 아무것도
쿼리는 말할 것 ...
WHERE User.rank='admin' LEFT JOIN AdminSettings
WHERE User.rank='user' LEFT JOIN UserSettings
나의 현재 쿼리는 이것이다 :
$query = "SELECT * FROM Users as U WHERE U.user_id = :id ";
$query .= "LEFT JOIN Banners as B ON U.banner_id = B.banner_id ";
$query .= "LEFT JOIN AdminSettings ON U.server_id = AdminSettings.user_id WHERE U.rank='Admin' ";
$query .= "LIMIT 1";
문제는 단지 User.rank = '관리자'를이 행을 보여주고 User.rank = '사용자의 나머지 행을 표시하지 않는다는 것입니다.