SQL查询,其中第二个表中存在2个或更多记录

时间:2015-03-15 18:34:09

标签: sql sqlite subquery

我有3个表,想要选择表1中的所有记录,其中表2中的所有记录都连接到表3并进行检查。

我知道有一种方法可以使用子查询,但不知道它是什么。

一个简单的人正在接受什么课程的问题。

我使用sqlite3作为数据库。

Students表t1(id int,name text)

id      name
------- ---------
1       Smith
2       Jones
3       Wilson
--------------------------------------------------

Classes表t2(类int,student int)

class   student
------- ---------
1       1
1       2
1       3
2       1
2       2
3       1
3       3
4       2
4       3

Selected表t3(t3class int,t3checked boolean)

t3Class t3Checked
------- ---------
1       false
2       false
3       true
4       true

谁参加课程

Class   Name
-----   --------
1,2 = Smith, Jones
1,3 = Smith, Wilson
1,4 = Jones, Wilson
1,2,4   = Jones
1,2,3,4 = 

1 个答案:

答案 0 :(得分:0)

我并非100%确定这可以在SQLite中使用,因为它不支持order by中的group_concat()。但是,你可以试试这个:

select classes, group_concat(student)
from (select student, group_concat(class) as classes
      from classes c
      group by student
     ) sc
 group by classes;

在MySQL中,正确的版本是:

select classes, group_concat(student order by student)
from (select student, group_concat(class order by class) as classes
      from classes c
      group by student
     ) sc
group by classes;

需要进行排序以确保具有相同班级的两名学生按正确顺序排列。