ホームページ >データベース >mysql チュートリアル >LEFT JOIN を使用してデフォルト設定と文字固有の設定を取得する方法
LEFT JOIN を使用したデフォルト設定および文字固有の設定の効率的な取得
この例では、LEFT JOIN
を使用してデフォルト設定と、該当する場合は文字固有のオーバーライドを取得する方法を示します。 元のクエリは、デフォルトを除く、キャラクター固有の設定のみを返しました。
両方を取得する鍵は、WHERE
句を正しく配置することです。結合の後をフィルタリングする代わりに、文字 ID フィルタを結合条件内に組み込みます:
<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>
この改訂されたクエリは、LEFT JOIN
テーブルと settings
テーブルの間で character_settings
を実行します。 ON
句は、一致する setting_id
のみが結合されることを保証し、さらに結合を character_id
が '1' であるレコードに制限します。 重要なのは、LEFT JOIN
に一致する行がない場合でも、settings
テーブルのすべての行が結果に含まれることを character_settings
が保証していることです。
<code class="language-php">array( 0 => array('somekey' => 'keyname', 'value' => 'thevalue'), // Default + Character-specific (if exists) 1 => array('somekey2' => 'keyname2', 'value' => null), // Default only 2 => array('somekey3' => 'keyname3', 'value' => null) // Default only );</code>null 以外の
がある行は、デフォルト設定と文字固有の設定の両方を示します。 value
列の NULL
値は、その特定のキーに対してデフォルト設定のみが存在することを示します。value
以上がLEFT JOIN を使用してデフォルト設定と文字固有の設定を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。