链接表中的父和子记录的SQL连接

链接表中的父和子记录的SQL连接

问题描述:

我努力创建一条SQL语句,该语句在单个查询中返回父和子记录。链接表中的父和子记录的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_UNIT2,并AUS_UNIT3

,我想我的查询以某种方式从COOURSE表中返回两个父母和孩子的记录,所以输出会是这样的......

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

我正在使用什么连接使用,并加入哪个字段上

非常感谢挣扎,

您可以通过使用(子女,父母)和独特的下降重复的,这样连接表:

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)) 
+0

非常感谢。这样做的技巧 – Konzy262

您可以使用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 

我会去一个子查询,而不是加入。

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) 
+0

没有必要从course_links中选择两次。 – sagi

+0

你确定吗?看起来他需要COURSE_LINK两栏中的值。 – BvS

+0

看看我的解决方案 – sagi