2016-03-28 30 views
1

Tek bir sorguda hem üst hem de alt kayıtları döndüren bir SQL deyimi oluşturmak için uğraşıyorum. Birleştirme tablosundaki üst ve alt kayıtlar için SQL birleştirmesi

Bunlar benim tablolardır

....

DERS

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 Eğer 3 sahiptir benim bağlantı tablosundaki AUS_COURSE gördüğünüz gibi

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

çocuk kayıtları, AUS_UNIT1, AUS_UNIT2 ve AUS_UNIT3

ben ... çıkış gibi bir şey olurdu böylece her nasılsa, Hülya ÖLÇER tablosundan hem üst hem de alt kayıtları döndürmek için benim sorgu istiyorum

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

Ben

cevap

3

Bunu, çiftleri düşmesi (çocuk, ebeveyn) ve farklı İÇİNDE kullanarak tabloları katılabilir:

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

Çok teşekkürler. Bu hile yaptı – Konzy262

0

Senkullanabilirsiniz, kullanmak katılmak ve

Birçok sayesinde hangi alanda katılmak için ne çalışma ile mücadele ediyorum

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 
1

Bir subselect yerine gitmek istiyorum bunun içinbirleşme.

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

İki kez course_links seçmek için gereksizdir. – sagi

+0

Emin misin? COURSE_LINKS öğesinin her iki sütunundaki değerlere ihtiyacı var gibi görünüyor. – BvS

+0

Çözümüme bakın – sagi

İlgili konular