MySQL LEFT JOIN を使用した複数のテーブルの結合
このシナリオでは、3 つのテーブルを結合するという課題に遭遇します: 'persons' 、「恐怖」、および「人物_恐怖」。目的は、恐怖を持たない人も含めて、'人' テーブルのすべてのレコードを、関連する恐怖とともに表示することです。
最初に、提供された LEFT JOIN クエリは、' person_fear.personID' と ' を結合しようとします。 Person_Fear.FearID'、誤った結果が得られます。正しいアプローチは、適切な外部キー関係に基づいて、'Person_Fear' を 'persons' および 'Fears' と結合することです。
解決策:
SELECT Persons.Name, Persons.SS, Fears.Fear FROM Persons LEFT JOIN Person_Fear ON Person_Fear.PersonID = Persons.PersonID LEFT JOIN Fears ON Person_Fear.FearID = Fears.FearID
この改訂されたクエリは、「人物」を効果的に結合します。 'person_Fear' と 'Fears' はそれぞれの外部キーを介して生成されます。 「パーソン」と「パーソン_Fear」の間の LEFT JOIN により、関連する恐怖があるかどうかに関係なく、「パーソン」テーブルのすべてのレコードが確実に含まれます。
代替解決策:
SELECT Persons.Name, Persons.SS, Fears.Fear FROM Persons LEFT JOIN Person_Fear INNER JOIN Fears ON Person_Fear.FearID = Fears.FearID ON Person_Fear.PersonID = Persons.PersonID
この代替アプローチでは、「Person_Fear」と「恐怖」をフィルタリングして、関連する恐怖を絞り込みます。後続の「persons」との LEFT JOIN によっても、すべての個人が結果に含まれることが保証されます。
以上がLEFT JOIN を使用して MySQL で 3 つのテーブルを正しく結合し、すべての人物とそれに関連する恐怖を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。