LEFT JOIN 2テーブルを使用しようとしています。それはうまくいきます。しかし、私はsetting_value
という名前のフィールドの2つのセットを取得しています。私はtblSettings
を取得しようとしています。 setting_value
の場合のみtblAgencySettings
。 setting_value
はNULLです。私はこれをどうやってやりますか?私はフィールドの名前を変更することができます知っている、PHPで私はtblAgencySettings
を確認することができます。 setting_value
、NULLの場合はtblSettings
を取得します。 setting_value
しかし、私はこれをMySQLに保存することを好む。MySQL Left Join、NULLの場合は、どちらか一方からフィールドを選択します。
SELECT `tblSettings`.`id`, `tblSettings`.`setting_name`,
`tblSettings`.`setting_value`, `tblAgencySettings`.`setting_value`
FROM `tblSettings` LEFT JOIN `tblAgencySettings`
ON `tblSettings`.`id` = `tblAgencySettings`.`setting_id`
AND `tblAgencySettings`.`agency_id` = '1'
WHERE `tblSettings`.`changeable` = '1'
私はちょうど気付いた。私はこれに言及しなかった。 tblAgencySettings.setting_valueに値がある場合
SELECT `tblSettings`.`id`, `tblSettings`.`setting_name`,
COALESCE(`tblAgencySettings`.`setting_value`, `tblSettings`.`setting_value`)
FROM `tblSettings` LEFT JOIN `tblAgencySettings`
ON `tblSettings`.`id` = `tblAgencySettings`.`setting_id`
AND `tblAgencySettings`.`agency_id` = '1'
WHERE `tblSettings`.`changeable` = '1'
COALESCE関数は、あなたがそう、このそれを与える最初の非NULL値を返します:
COALESCE(`tblAgencySettings`.`setting_value`, `tblSettings`.`setting_value`)
をしかし変更はただ単にCOALESCEを追加tblSettings.setting_value