在mysql中为学生获取相关科目

时间:2018-05-02 05:40:38

标签: mysql sql

我正在尝试学习使用MySQL注册的学生。

学生表:

Student table format

科目表:

Subject table format

学生报名科目:

stu_subjects  table format

我的查询:

select *,(select  subject_id from  stu_subjects ss where ss.student_id = 
s.student_id ) as subject_id
from student s

执行上述查询时,我收到以下错误:

Error

所以我修改了我的查询如下(添加限制1):

select *,(select  subject_id from  stu_subjects ss where ss.student_id = 
s.student_id limit 1) as subject_id
from student s

最终输出: final output

如果您看到输出,我只会将一个主题映射到学生。但我需要学生注册的每个科目。那我怎么能实现呢?

我想要达到的目标是: What I'm trying to achieve is

3 个答案:

答案 0 :(得分:0)

使用此查询:

System.IO.FileNotFoundException

<强>插图:

.NET Assemblies -> Appdomain: plugintest

答案 1 :(得分:0)

虽然Jagrut Sharma的回答是正确的,但这个版本指定了主题'id的分隔符,并使用了明确的JOIN而不是隐式的。{/ p>

修改,似乎是默认分隔符,因此您可以从GROUP_CONCAT中省略它。我会在我的查询中保留它,以便您知道如何更改它,如果需要的话。

SELECT st.student_id, st.student_name
       GROUP_CONCAT(sb.subject_id SEPARATOR ',')
FROM stu_subjects sb JOIN student st ON sb.student_id = st.student_id
GROUP BY st.student_id;

答案 2 :(得分:0)

您可以使用简单的连接查询来实现此目的。

SELECT st.student_id,st.student_name,sb.subject_name
FROM student st 
JOIN stu_subjects ss ON (ss.student_id = st.student_id)
JOIN Subject  sb ON (ss.subject_id = sb.subject_id )

同样如你所提到的,如果你只想要主题MySQL,那么在下面添加条件

WHERE subject_name ='MySQL'