2015-02-14 2 views
1

Я пытаюсь получить номера класса с расписанием курса перекрытием, мои таблицы: курсы:SQL WHERE с многосвязной РЕГИСТРИРУЙТЕСЬ и GROUP BY

COURSE_ID NAME 
11   matematika 
22   logika 

График работы:

ID COURSE_ID ID_ROOM DAY HOUR 
1 11 105 Mon 10am 
2 11 105 Wen 10am 

class_room:

ID_ROOM LOCATION CAPACITY 
105 A 20 
205 B 10 

My sql is:

select class_room.ID_ROOM as crid, class_room.LOCATION, schedule.DAY as d, schedule.HOUR as h, count(courses.COURSE_ID) as count 
    from schedule 
    natural join class_room 
    natural join courses 
    group by crid, d, h 
    order by count desc; 

и я получаю:

crid LOCATION d h count 
105 A Mon 10am 3 
105 A Thu 10am 2 
305 C Mon 11am 1 
105 A Wen 10am 1 
205 B Wen 10am 1 

Но мне нужно, чтобы показать только те строки, где подсчитывают больше 1. I судимого

select class_room.ID_ROOM as crid, class_room.LOCATION, schedule.DAY as d, schedule.HOUR as h, count(courses.COURSE_ID) as count 
    from schedule 
    natural join class_room 
    natural join courses 
    where count>1 
    group by crid, d, h 
    order by count desc; 

Но я получаю 1054 ошибки Как решить эту проблему?

ответ

0

Не использовать where. Используйте having

select class_room.ID_ROOM as crid, class_room.LOCATION, schedule.DAY as d, schedule.HOUR as h, count(courses.COURSE_ID) as count 
    from schedule 
    natural join class_room 
    natural join courses 
    group by crid, d, h 
    having count>1 
    order by count desc; 
+0

Великий, он работает как шарм, спасибо большое, но добавление, если я хочу сделать не более (счетчик), имеющий не за работой. Как это реализовать? – Sergey

0

Снимите count > 1 и после того, как группы по добавить having count(courses.COURSE_ID) > 1