Sql 选择“使用联接表从一个父表获取值”“从另一个父表获取给定值”
我有一个DB,它有两个父表,它们由连接表中的外键引用,我绞尽脑汁想弄清楚,如果给定一个父表中的值,如何从一个父表中获取所有相关行。例如,使用以下表格和列: 以及如下所示的行: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
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));