题
我在与用于显示自定义配置文件字段和任何(可选)的相应值的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
记录任何列中没有示出所有,当他们应该显示,但只是一个空值。
非常感谢!
解决方案
尝试移动简档值条件到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
不隶属于 StackOverflow