1. ホーム
  2. マイスル

[解決済み】MySQLで3つのテーブルを結合する。

2022-03-17 03:42:21

質問

という名前の3つのテーブルを持っています。

**Student Table**
-------------
id    name
-------------
1     ali
2     ahmed
3     john
4     king

**Course Table**
-------------
id    name
-------------
1     physic
2     maths
3     computer
4     chemistry

**Bridge**
-------------
sid    cid
-------------
1     1
1     2
1     3
1     4
2     1
2     2
3     3
3     4
4     1
4     2

今度は、生徒の名前と、その生徒が学んだコース名を表示するようにします。

**Result**
---------------------------
Student        Course
---------------------------
ahmed         physic
ahmed         maths
ahmed         computer
ahmed         chemistry
ali           physic
ali           maths
john          computer
john          chemistry
king          physic
king          maths

次のようなクエリを構築します。

select s.name as Student, c.name as Course from student s, course c join bridge b on c.id = b.cid order by s.name

しかし、必要な結果が返ってこない...。

また、誰が他の人よりもマネージャーであるかを見つけたい場合、正規化されたフォームには何があるでしょうか。

**employee**
-------------------
id        name
-------------------
1         ali
2         king
3         mak
4         sam
5         jon

**manage**
--------------
mid      eid
--------------
1         2
1         3
3         4
4         5

そして、このような結果を得たいと考えています。

**result**
--------------------
Manager      Staff
--------------------
ali          king
ali          mak
mak          sam
sam          jon

解決方法は?

を使うだけです。

select s.name "Student", c.name "Course"
from student s, bridge b, course c
where b.sid = s.sid and b.cid = c.cid