SQL自己結合を理解しようとしています。従業員の名、姓、住所、市区町村を含む次のテーブル「persons」があります(ソースW3Schools)。
mysql> select * from persons;
+------+-----------+-----------+--------------+-----------+
| P_id | LastName | FirstName | Address | City |
+------+-----------+-----------+--------------+-----------+
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
+------+-----------+-----------+--------------+-----------+
「ハンセンオラ」と同じ都市の従業員の名前を返したいと思います。だから私は自己結合を書き、それはうまくいきます:
mysql> select p1.Lastname, p1.firstname from persons p1, persons p2 where p1.city = p2.city and p2.lastname = 'Hansen';
+----------+-----------+
| Lastname | firstname |
+----------+-----------+
| Hansen | Ola |
| Svendson | Tove |
+----------+-----------+
ただし、エイリアスp2をp1に変更すると、つまりp2.lastname ='Hansen'からp1.lastname='Hansen'に変更すると、両方の従業員の名前が取得されません。
mysql> select p1.Lastname, p1.firstname from persons p1, persons p2 where p1.city = p2.city and p1.lastname = 'Hansen';
+----------+-----------+
| Lastname | firstname |
+----------+-----------+
| Hansen | Ola |
| Hansen | Ola |
+----------+-----------+
エイリアスをp2からp1に変更すると結果が変わる理由を誰かが理解するのを手伝ってもらえますか?ありがとうございました。