【发布时间】:2015-05-04 11:10:58
【问题描述】:
我有三个表 "Users" 、 "Subjects" 和 "Marks" like
用户表
id name
1 A
2 B
3 C
4 D
5 E
6 A
7 B
科目表
id name
1 Chemistry
2 Physics
3 English
4 Maths
5 History
分数表
u_id是Users(id)的外键,s_id是Subjects(id)的外键
id u_id s_id marks
1 1 1 60
2 1 2 70
3 1 3 80
4 2 2 80
5 2 3 44
6 3 1 50
7 5 4 50
8 4 5 50
9 5 4 100
10 2 5 100
我希望结果是这样的
id Name Chemistry Physics English
1 A 60 70 80
2 B NULL 80 44
3 3 50 NULL NULL
使用连接
到目前为止,我只能得到
name name marks
A English 80
A Physics 70
A Chemistry 60
B English 44
B Physics 80
C Chemistry 50
使用以下查询
SELECT u.name, s.name , m.marks
FROM Users as u
RIGHT JOIN Marks as m ON m.u_id = u.id
LEFT JOIN Subjects as s ON m.s_id = s.id
WHERE s.name = "English"
OR s.name = "Physics"
OR s.name = "Chemistry"
ORDER BY u.name; "
【问题讨论】:
-
我似乎无法获得所需的结果,因为在不同列中获取 Marks 的值。我使用 select u.name Name, s.name as Subject, m.marks as Marks from Users as u right join Marks as m on m.u_id = u.id left join Subjects as s on m.s_id = s.id其中 s.name = "English" OR s.name = "Physics" OR s.name = "Chemistry" order by u.name;
-
相应地编辑您的问题。
-
@twitch,看看我做的是不是你想要的,;D
标签: mysql