MySQL LEFT JOIN問題-LEFT列がありません
質問
カスタムプロファイルフィールドと対応する値(オプション)を表示するために使用される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