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 很陌生,任何建议都会很有帮助。

4

3 回答 3

0

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

于 2017-03-24T16:56:11.203 回答
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
  )
于 2017-03-24T16:56:44.310 回答
0

您必须使用 have 来过滤聚合结果(而不是在哪里)

  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
于 2017-03-24T16:59:56.593 回答