2

我在用于显示自定义配置文件字段和任何(可选)相应值的 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记录的列都没有显示,当它们应该显示时,它们只是一个空值。

非常感谢!

4

1 回答 1

7

尝试将配置文件值条件移动到 JOIN 语句:

 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
于 2008-12-02T12:19:10.403 回答