遇到SQL Error 1111的问题

时间:2017-03-24 16:50:14

标签: mysql sql group-by mysql-error-1111

我正在创建一个客户有超过1个预订的实例。为此,每次在预订表中多次列出客户编号时,这表示他们有多个预订(这也是条件)。不幸的是,当我尝试运行此查询时,我得到:

  

错误代码:1111(无效使用组功能)。

以下是我在下面所做的事情。

SELECT FirstName, LastName, tripName
FROM reservation, customer, trip
WHERE reservation.CustomerNum = customer.CustomerNum
AND reservation.TripID = trip.TripID
AND COUNT(reservation.CustomerNum) > 1
GROUP BY reservation.CustomerNum;

我是SQL的新手,任何建议都会非常有帮助。

3 个答案:

答案 0 :(得分:0)

如果您使用GROUP BY,则您选择的所有字段必须位于聚合函数中或包含在GROUP BY子句中。

答案 1 :(得分:0)

您需要编写正确的连接,使用别名有助于保持可读性并节省额外的击键,并且您需要使用类似的内容将结果限制为具有多个预留的那些:

select FirstName, LastName, tripName
from customer c 
  inner join reservation r
    on c.CustomerNum = r.CustomerNum
  inner join trip t
    on r.TripID = t.TripID
where c.CustomerNum in (
  select ir.CustomerNum
  from reservation ir
  group by ir.CustomerNum
  having count(*) > 1
  )

答案 2 :(得分:0)

您必须使用过滤来过滤汇总结果(而不是在哪里)

  SELECT FirstName, LastName, tripName
  FROM reservation
  INNER JOIN customer on reservation.CustomerNum = customer.CustomerNum
  INNER JOIN trip on reservation.TripID = trip.TripID
  GROUP BY reservation.CustomerNum;
  having  COUNT(reservation.CustomerNum) > 1