知りたいこと
MySQLの学習をしています。
LEFT JOINを使用したSELECT文で、レコード数が少ない方のテーブルにLIMITを指定したいです。
LIMITの使用では実現不可であれば最もスマートな他の方法を知りたいです。
前提
下記の2つのテーブルをLEFT JOINで結合し、LIMITを指定したSELECT文を動かしていますが、思うような結果を得られません。
■playerテーブル
id | name |
---|---|
1 | suzuki |
2 | tanaka |
3 | yamamoto |
4 | satou |
5 | katou |
■daysテーブル
pid | day |
---|---|
1 | Mon. |
1 | Sun. |
2 | Mon. |
2 | Sat. |
3 | Tue. |
3 | Fri. |
3 | Sun. |
5 | Thu. |
5 | Fri. |
5 | Sat. |
■SQL文
SELECT name, day FROM player LEFT OUTER JOIN days ON player.id = days.pid ORDER BY player.id ASC LIMIT 2;
■結果
LIMITを2としているので、結合されたテーブルの2レコード分を得られました。が、これは求めている結果ではありません。
name | day |
---|---|
suzuki | Mon. |
suzuki | Sun. |
得たい結果
結合したテーブルの2レコードではなく、結合前のplayerテーブルの2レコード(idの1と2)に紐づけられたレコードを取得したいです。
name | day |
---|---|
suzuki | Mon. |
suzuki | Sun. |
tanaka | Mon. |
tanaka | Sat. |
こちらを実現するにはどのようなSQL文を書けば良いのでしょうか?
複数回SQLを実行するしかありませんか?スマートな方法をご教示いただきたいです。
よろしくお願いいたします。
0 コメント