MySQL Left Join 문제 - 누락 된 왼쪽 열
문제
사용자 정의 프로필 필드와 (선택 사항) 해당 값을 표시하는 데 사용되는 SQL 쿼리에 문제가 있습니다.
다음은 사용중인 SQL 쿼리입니다.
SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
LEFT JOIN `profile_values` AS pv ON (pf.`id` = pv.`field_id`)
WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d') AND (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
ORDER BY pf.`order` ASC
내가 가진 문제는 해당하는 열이 없다는 것입니다. profile_values
레코드는 표시해야 할 때 전혀 표시되지 않고 빈 가치 만 표시됩니다.
많은 감사합니다!
해결책
프로파일 값 조건을 조인 명령문으로 옮기십시오.
SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
LEFT JOIN `profile_values` AS pv ON (
pf.`id` = pv.`field_id` AND
(pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
)
WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d')
ORDER BY pf.`order` ASC
제휴하지 않습니다 StackOverflow