SQLite 中的递归 sql 查询 n 到 n
Recursive sql query n to n in SQLite
我有一个像这样的数据库 table
Table student
_______________
id_student int (PK)
student_name VARCHAR
我有一个递归循环:
一个学生可以监督很多学生,一个学生可以被很多学生监督
所以一个新的 table:
Table oversee
________________
id_student pk, fk
id_overseen pk, fk
date date
问题是我想获取我拥有的列表
我做了一个 sql 查询:
with
sr1 as ( select s.student_name as over from student s, oversee o where o.id_student = s.id_student),
sr2 as (select s.student_name as overseen from student s, oversee o where o.id_overseen = s.id_student)
select distinct * from sr1, sr2;
问题是查询return错误的答案
我的意思是如果我们在 table 中有两行,它将 return 4 行。
我想让每个学生都受到监督:
学生 |监督。
有人有什么想法吗?
谢谢
I want to get a table with student | overseen | date
SELECT s.student_name AS student
, s2.student_name AS overseen
, oversee.date
FROM student s
JOIN oversee ON oversee.id_student = s.id_student
JOIN student s2 ON s2.id_student = oversee.id_overseen
我有一个像这样的数据库 table
Table student
_______________
id_student int (PK)
student_name VARCHAR
我有一个递归循环: 一个学生可以监督很多学生,一个学生可以被很多学生监督 所以一个新的 table:
Table oversee
________________
id_student pk, fk
id_overseen pk, fk
date date
问题是我想获取我拥有的列表 我做了一个 sql 查询:
with
sr1 as ( select s.student_name as over from student s, oversee o where o.id_student = s.id_student),
sr2 as (select s.student_name as overseen from student s, oversee o where o.id_overseen = s.id_student)
select distinct * from sr1, sr2;
问题是查询return错误的答案 我的意思是如果我们在 table 中有两行,它将 return 4 行。 我想让每个学生都受到监督: 学生 |监督。 有人有什么想法吗? 谢谢
I want to get a table with
student | overseen | date
SELECT s.student_name AS student
, s2.student_name AS overseen
, oversee.date
FROM student s
JOIN oversee ON oversee.id_student = s.id_student
JOIN student s2 ON s2.id_student = oversee.id_overseen