2016-06-12 4 views
0

Ich habe eine Abfrage auf „alle Kurse finden sowohl in der Herbst 2009 Semester und im Frühjahr 2010 Semester gelehrt“, wieWie funktioniert der Korrelationsname in der inneren Abfrage?

SELECT 
    course_id 
FROM 
    section S 
WHERE 
    semester = 'Fall' 
AND YEAR = 2009 
AND EXISTS (
    SELECT 
     * 
    FROM 
     section T 
    WHERE 
     semester = 'Spring' 
    AND YEAR = 2010 
    AND S.course_id = T.course_id 
); 

Im zweiten Teil der where-Klausel der inneren Abfrage Sie S.course_id=T.course_id sehen konnte. Was ist S.course_id? Ist das der course_id der Beziehung, die von der äußeren Abfrage erzeugt wird?

+3

Yes.'S.course_id' von der äußeren Abfrage geliefert wird. – 1000111

Antwort

0

Ja S.course_id ist die Spalte in der äußeren Abfrage.
S.course_id = T.course_id wählt nur den Datensatz mit dem Kurs-ID sowohl in den inneren und äußeren Anfragen gleich


Inorder alle Kurse sowohl im Herbst 2009 Semester und im Frühjahr 2010 Semester gelehrt finden Ihre Abfrage sollte wie sein

SELECT course_id FROM section 
WHERE 
semester = 'Fall' AND year = '2009' 
UNION 
SELECT course_id FROM section 
WHERE 
semester = 'Spring' AND year = '2010' 
; 

siehehttp://sqlfiddle.com/#!9/449be

Verwandte Themen