web-dev-qa-db-ja.com

別の3番目のテーブルの外部キーを使用して、2つの異なるテーブルから2つの列を選択する方法

私はMYSQLを使用していて、ここに私が持っているスキーマがあります:

これが私の最初のテーブルですuser

+-----+------------------+
| id  | name             |
+-----+------------------+
| 101 | Daniel Radcliffe |
| 102 | Elijah Wood      |
| 103 | Robert Downey Jr |
+-----+------------------+

これが私の2番目のテーブルですmovie

+----+---------------------+
| id | name                |
+----+---------------------+
|  1 | Harry Potter 1      |
|  2 | Harry Potter 2      |
|  3 | Harry Potter 3      |
|  4 | Lord of the Rings 1 |
|  5 | Lord of the Rings 2 |
|  6 | Lord of the Rings 3 |
|  7 | Iron Man 1          |
|  8 | Iron Man 2          |
+----+---------------------+

これが私の最後のテーブルですlist

+---------+----------+ 
| user_id | movie_id | 
+---------+----------+ 
|     101 |        1 | 
|     101 |        2 | 
|     101 |        3 | 
|     102 |        4 | 
|     102 |        5 | 
|     102 |        6 | 
|     103 |        7 | 
|     103 |        8 | 
+---------+----------+ 

namemovieを次のように並べて表示したいと思います。

+------------------+--------------------+
| Daniel Radcliffe | Harry Potter 1     |
| Daniel Radcliffe | Harry Potter 2     |
| Daniel Radcliffe | Harry Potter 3     |
| Elijah Wood      | Lord of the Rings 1|
| Elijah Wood      | Lord of the Rings 2|
| Elijah Wood      | Lord of the Rings 3|
| Robert Downey Jr | Iron Man 1         |
| Robert Downey Jr | Iron Man 2         |
+------------------+--------------------+

listテーブルには、user_idとmovie.idをそれぞれ参照するuser_idとmovie_idの外部キーがあります。では、JOINを使用して上記のデータを表示するにはどうすればよいですか。

1
MikeJoe
SELECT user.name, movie.name
FROM user, movie, list
WHERE list.user_id  = user.id
  AND list.movie_id = movie.id
ORDER BY 1,2;

または、クエリテキストでWord JOINを表示する必要がある場合

SELECT user.name, movie.name
FROM user
JOIN list  ON list.user_id  = user.id
JOIN movie ON list.movie_id = movie.id
ORDER BY 1,2;
2
Akina