2013-12-15 129 views
1
除外

我的查询需要做到以下几点:语法类似于MySQL的

SELECT 
    c1.building, 
    c1.room_number 
FROM 
    time_slot AS t, 
    section AS s, 
    classroom AS c1 
WHERE c1.capacity > 30 
    AND s.semester = 'Fall' 
    AND s.year = '2009' 
    AND t.day = 'M' 
    AND t.start_hr < 12 EXCEPT 
    SELECT 
    c1.building, 
    c1.room_number 
    FROM 
    time_slot AS t, 
    section AS s NATURAL 
    JOIN classroom AS c1 
    WHERE c1.capacity > 30 
    AND s.semester = 'Fall' 
    AND s.year = '2009' 
    AND t.day = 'M' 
    AND t.start_hr < 12 

它返回从没有在秋季上周一的占领中午前教室表中的所有建筑名称和房间号2009学期。更改where语句是无效的,因为它给了我不同的结果。

+0

'time_slot'与'section'和/或'classroom'有什么关系? – peterm

+0

我很抱歉不清楚。 –

+0

教室(建筑,room_number,容量) 部分(COURSE_ID,sec_id,学期一年,建筑,room_number,time_slot_id) TIME_SLOT(time_slot_id,日,START_HR,start_min,end_hr,end_min) –

回答

0
SELECT 
    c1.building, 
    c1.room_number 
FROM 
    time_slot AS t, 
    section AS s, 
    classroom AS c1 
WHERE c1.capacity > 30 
    AND s.semester = 'Fall' 
    AND s.year = '2009' 
    AND t.day = 'M' 
    AND t.start_hr < 12 and (c1.building, 
    c1.room_number) not in (
    SELECT 
    c1.building, 
    c1.room_number 
    FROM 
    time_slot AS t, 
    section AS s NATURAL 
    JOIN classroom AS c1 
    WHERE c1.capacity > 30 
    AND s.semester = 'Fall' 
    AND s.year = '2009' 
    AND t.day = 'M' 
    AND t.start_hr < 12)