一 這裏採用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 --- 去掉重複記錄,執行這條語句會彈出一個合併之後的表