문제

사용자 정의 프로필 필드와 (선택 사항) 해당 값을 표시하는 데 사용되는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top