【问题标题】:SELECT get values from one parent table given values from another parent table using junction tableSELECT 使用联结表从另一个父表中获取给定值的父表
【发布时间】:2017-01-23 03:13:49
【问题描述】:

我有一个带有两个父表的数据库,它们由联结表中的外键引用,我正在摸索,试图弄清楚如何从一个父表中获取所有关联的行,给定一个值其他。 例如,具有以下表格和列

schoolA_courses:
id 
course_prefix
course_number 

schoolB_courses: 
id
course_prefix 
course_number

schoolB_equivalencies:
equivalency_id
schoolA_id
schoolB_id
FOREIGN KEY (schoolA_id) REFERENCES schoolA_courses (id)
FOREIGN KEY (schoolB_id) REFERENCES schoolB_courses (id)

还有如下所示的行:

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 课程前缀和编号(假设是 MATH 101),我如何构造一个 SELECT 查询来查找在 schoolB_equivalencies 表中列为等效的所有 schoolB 课程前缀/编号对?例如,在我的 MATH 101 虚拟课程中,我将如何获得

MATH 100
MATH 110

【问题讨论】:

    标签: sql join sqlite foreign-keys


    【解决方案1】:

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

    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
    WHERE id IN (SELECT schoolB_id
                 FROM schoolB_ueqivalencies
                 WHERE schoolA_id = (SELECT id
                                     FROM schoolA
                                     WHERE course_prefix = 'MATH'
                                       AND course_number = 101));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多