ホームページ >データベース >mysql チュートリアル >LEFT JOIN を使用してデフォルト設定と文字固有のオーバーライドを取得するにはどうすればよいですか?

LEFT JOIN を使用してデフォルト設定と文字固有のオーバーライドを取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-22 07:42:09412ブラウズ

How Can I Retrieve Default Settings and Character-Specific Overrides Using a LEFT JOIN?

拡張 WHERE 句を使用した LEFT JOIN

「設定」テーブルからデフォルト設定を取得する必要があるが、上書きされたロール設定も含める必要があるとします。ただし、既存のクエリは、デフォルト値を除き、ロールを明示的に設定する設定のみを取得します。

この問題を解決するには、クエリを変更して目的の結果を得ることができます。 WHERE 句によるフィルタリング (左の結合が失敗した行を除外する) の代わりに、条件を結合自体に移動します。

<code class="language-sql">SELECT  `settings`.*, `character_settings`.`value`
FROM    `settings`
LEFT JOIN 
       `character_settings` 
ON     `character_settings`.`setting_id` = `settings`.`id`
        AND `character_settings`.`character_id` = '1'  </code>
条件を結合に移動することで、ロール固有の設定が存在する場合にのみ左結合が成功し、それらが上書きされていない場合はデフォルト設定が保持されることが保証されます。これにより、望ましい結果が得られます:

<code class="language-php">array(
    '0' => array('somekey' => 'keyname', 'value' => 'thevalue'),
    '1' => array('somekey2' => 'keyname2'),
    '2' => array('somekey3' => 'keyname3')
)</code>
キー 1 と 2 がデフォルト値を表す場合、キー 0 にはロール固有の値で拡張されたデフォルト値が含まれます。

以上がLEFT JOIN を使用してデフォルト設定と文字固有のオーバーライドを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。