【问题标题】:SQL WHERE with multiply JOIN and GROUP BYSQL WHERE 与乘法 JOIN 和 GROUP BY
【发布时间】:2015-02-14 21:41:50
【问题描述】:

我正在尝试获取课程安排重叠的教室,我的桌子:课程:

COURSE_ID    NAME
11           matematika
22           logika

时间表:

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

教室:

ID_ROOM LOCATION CAPACITY
105 A   20
205 B   10

我的sql是:

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 的行。 我试过了

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 错误 如何解决?

【问题讨论】:

    标签: mysql sql join count group-by


    【解决方案1】:

    不要使用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;
    

    【讨论】:

    • 太棒了,它就像一个魅力,非常感谢你,但是如果我想制作 max(count) ,但没有工作。如何实现?
    【解决方案2】:

    删除count > 1 并在组后添加having count(courses.COURSE_ID) > 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2014-10-22
      • 2021-11-06
      相关资源
      最近更新 更多