我正在创建一个客户有超过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的新手,任何建议都会非常有帮助。
答案 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