ホームページ >データベース >mysql チュートリアル >フィルタリングされた右側のテーブルと適切に左結合して、すべてのデフォルト設定とオプションのカスタム設定を取得する方法
フィルタリングされた左テーブルを使用した左結合
この質問では、左側のテーブルの WHERE 句により期待される結果が得られない 2 つのテーブルからのデータの取得について説明します。目標は、設定テーブルからすべてのデフォルト設定を取得し、利用可能な場合は特定の役割の役割固有のカスタム設定を取得することです。
元のクエリ:
<code class="language-sql">SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1' </code>
ただし、このクエリは、指定された文字 (character_id = 1) に一致する文字固有の設定がある行のみを返します。デフォルト設定を含めるには (ロール固有の設定が存在しない場合でも)、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>
この変更されたクエリは、左側のテーブル (設定) がどの条件でもフィルタリングされない左側結合を効果的に実行するようになりました。したがって、すべてのデフォルト設定を取得しますが、ロール固有の設定が存在する場合はオプションでそれも含めます。
以上がフィルタリングされた右側のテーブルと適切に左結合して、すべてのデフォルト設定とオプションのカスタム設定を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。