Sql 选择“使用联接表从一个父表获取值”“从另一个父表获取给定值”

Sql 选择“使用联接表从一个父表获取值”“从另一个父表获取给定值”,sql,join,sqlite,foreign-keys,Sql,Join,Sqlite,Foreign Keys,我有一个DB,它有两个父表,它们由连接表中的外键引用,我绞尽脑汁想弄清楚,如果给定一个父表中的值,如何从一个父表中获取所有相关行。例如,使用以下表格和列: 以及如下所示的行: schoolA: 1, MATH, 101 2, SOCI, 100 3, HIST, 211 schoolB: 1, MATH, 100 2, MATH, 110 3, ENGL, 210 schoolB_equivalencies: 1, 1, 1 (school A's MATH 101 equivalent t

我有一个DB,它有两个父表,它们由连接表中的外键引用,我绞尽脑汁想弄清楚,如果给定一个父表中的值,如何从一个父表中获取所有相关行。例如,使用以下表格和列:

以及如下所示的行:

schoolA:
1, MATH, 101
2, SOCI, 100
3, HIST, 211

schoolB:
1, MATH, 100
2, MATH, 110
3, ENGL, 210

schoolB_equivalencies:
1, 1, 1 (school A's MATH 101 equivalent to school B's MATH 100)
2, 1, 2 (school A's MATH 101 equivalent to school B's MATH 110)
给定schoolA课程前缀和编号(比如数学101),我如何构造SELECT查询以查找schoolB_等价表中列出的所有schoolB课程前缀/编号对?例如,我的数学101虚拟课程,我将如何获得

MATH 100
MATH 110

此查询获取有关原始课程的信息:

SELECT *
FROM schoolA
WHERE course_prefix = 'MATH'
  AND course_number = 101;

此查询获取有关联接表中相应行的信息:

SELECT *
FROM schoolB_ueqivalencies
WHERE schoolA_id = (SELECT id
                    FROM schoolA
                    WHERE course_prefix = 'MATH'
                      AND course_number = 101);
此查询获取schoolB中相应行的信息:

SELECT *
FROM schoolB_ueqivalencies
WHERE schoolA_id = (SELECT id
                    FROM schoolA
                    WHERE course_prefix = 'MATH'
                      AND course_number = 101);
SELECT *
FROM schoolB
WHERE id IN (SELECT schoolB_id
             FROM schoolB_ueqivalencies
             WHERE schoolA_id = (SELECT id
                                 FROM schoolA
                                 WHERE course_prefix = 'MATH'
                                   AND course_number = 101));