我有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 =
答案 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;
需要进行排序以确保具有相同班级的两名学生按正确顺序排列。