これはmysql v。4.xにあります...これは新人質問ですが何らかの理由で私は確信していますこれを動作させるためにSQLを理解することはできません。ここでは、関連するテーブルの近似値は次のとおりです。mysql外部結合 - 相関テーブルに常にエントリがないレコードの完全なリストを返す
Item
---
ItemID
など
ItemPerson
--------
PersonID
ItemID
TimeAccessed
のはのは、私が持っているとしましょう、私は1,2,3,4,5
の項目IDを持っているとしましょうItemPersonの1レコード:{'JohnDoe',1,'12:00PM'}
私は入力としてPersonNameを持っています。アイテムがアクセスされた時間を含め、すべてのアイテムのリストが返されるようにしたい。そのアイテムが指定されたPersonNameによってアクセスされなかった場合、その時間はNULLが必要です。私は次のことを試してみた
:
SELECT i.*, ip.TimeAccessed
FROM Item i LEFT OUTER JOIN ItemPerson ip
ON i.ItemID = ip.ItemID
WHERE (ip.PersonName = 'JohnDoe' OR ip.PersonName IS NULL)
私は「JohnDoeさん」の期待どおりの結果を得る...すべての項目が返され、ItemIDを1時間を持っています。
「JohnDoe」を「JaneDoe」に変更した場合、ItemIDの2-5しか取得できませんが、すべてのアイテムを返すクエリをすべての時間だけNULLにします。
左はJaneDoeの結果を制限するものです。それらがすべて必要な場合は、「外部結合」(左揃えなし)を試してください。関連するレコードだけが必要な場合は、左または右の内部結合を使用します。 –