簡體   English   中英

鏈接表中父記錄和子記錄的SQL連接

[英]SQL join for parent and child records in a link table

我正在努力創建一條在單個查詢中返回父記錄和子記錄的SQL語句。

這些是我的桌子。

課程

COURSE_ID | COURSE_CODE
----------+------------
912689    | AUS_COURSE
912389    | AUS_FH1
912769    | AUS_FH2
912528    | AUS_SSMOC1
912293    | AUS_UNIT1
912295    | AUS_UNIT2
912303    | AUS_UNIT3

COURSE_LINKS

COURSE_ID_FROM | COURSE_ID_TO
---------------+-------------
912689         | 912293
912689         | 912295
912689         | 912303

因此,您可以在我的鏈接表中看到AUS_COURSE有3個子記錄AUS_UNIT1AUS_UNIT2AUS_UNIT3

我希望查詢以某種方式從COOURSE表中同時返回父記錄和子記錄,因此輸出將類似於...

COURSE_ID | COURSE_CODE
----------+------------
912689    | AUS_COURSE
912293    | AUS_UNIT1
912295    | AUS_UNIT2
912303    | AUS_UNIT3

我正在努力確定要使用的聯接和要聯接的字段

非常感謝,

您可以使用IN(child,parent)和distant加入表,以刪除重復項,如下所示:

SELECT distinct c.course_ID,c.course_code
FROM COURSE c
INNER JOIN COURSE_LINKS cl
 ON(c.course_ID in(cl.course_id_from,cl.course_id_to))

我會選擇子選擇而不是聯接。

select COURSE_ID, COURSE_CODE from COURSE 
where COURSE_ID in (select COURSE_ID_FROM from COURSE_LINKS) 
OR COURSE_ID in (select COURSE_ID_TO from COURSE_LINKS)

您可以為此使用UNION ALL

SELECT COURSE_ID, COURSE_CODE
FROM COURSE
WHERE COURSE_ID = 912689

UNION ALL

SELECT c1.COURSE_ID, c1.COURSE_CODE
FROM COURSE AS c1
JOIN COURSE_LINKS AS c2 ON c1.COURSE_ID = c2.COURSE_ID_TO
WHERE c2.COURSE_ID_FROM = 912689

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM