2017-03-24 80 views
1

我正在創建客戶有多個預留的實例。要做到這一點,每次客戶號碼在預訂表中列出不止一次,這表示他們有多個預留(同樣是條件)。不幸的是,當我試圖運行這個查詢時,我得到:遇到SQL錯誤1111問題

錯誤代碼: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

這裏檢查答案:http://stackoverflow.com/questions/22141968/error-code-1111-invalid-use-of-group -功能。基本上你需要把你的計數移到有條件的地方。 –

回答

0

如果您使用GROUP BY,則您選擇的所有字段必須位於聚合函數中或包含在GROUP BY子句中。

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 
) 
+0

謝謝。我不知道'HAVING'這個關鍵字。非常有幫助,我會開始習慣使用正確的連接和別名。 –

+0

@AlexKennedy樂於助人! – SqlZim

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