mysql多表查詢1 --- 中間表

一   這裏採用join的方法進行多表查詢


這裏有4張表

1.student學生表

+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| s_id        | varchar(15) | NO   | PRI | NULL    |       |
| s_name      | varchar(15) | NO   |     | NULL    |       |
| s_password  | varchar(15) | NO   |     | NULL    |       |
| s_sex       | varchar(4)  | NO   |     | NULL    |       |
| s_age       | int(11)     | NO   |     | NULL    |       |
| s_term      | varchar(15) | NO   | MUL | NULL    |       |
+-------------+-------------+------+-----+---------+-------+

(1)其中s_term是學期 --- 外鍵


2.grade成績表

+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| g_id    | varchar(20) | NO   | PRI | NULL    |       |
| midterm | int(11)     | YES  |     | NULL    |       |
| endterm | int(11)     | YES  |     | NULL    |       |
| makeup  | int(11)     | YES  |     | NULL    |       |
| rank    | varchar(4)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+


3.中間表

+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| study_id   | varchar(15) | NO   | PRI | NULL    |       |
| subject_id | varchar(15) | NO   | MUL | NULL    |       |
| s_id       | varchar(15) | NO   | MUL | NULL    |       |
| g_id       | varchar(15) | YES  | MUL | NULL    |       |
+------------+-------------+------+-----+---------+-------+

(1)s_id是學生表中的主鍵,g_id是成績表中的主鍵,


4.學期表

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| term_id   | varchar(15) | NO   | PRI | NULL    |       |
| term_name | varchar(15) | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+


現在我需要合併的表中的字段有學生表中的學生id,成績表中的所有字段,這樣mysql語句可以這樣寫:

select distinct student.s_id, grade.* from
study
join student on (student.s_id = study.s_id)
join grade on (grade.g_id = study.g_id)
where student.s_id = '1001';

其中學號是已知的,distinct --- 去掉重複記錄,執行這條語句會彈出一個合併之後的表


發佈了33 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章