2016-03-20 27 views
1

Yalnızca 1000 KM'den uzun seyir mesafeli uçaklarda sertifikalandırılmış çalışanların adlarını yazdırın. HAVING EVERY maddesi destekSQL deyim hatası

SELECT E.ename 
FROM Employees E, Certified C, Aircraft A 
WHERE C.aid = A.aid AND E.eid = C.eid 
GROUP BY E.eid, E.ename 
HAVING EVERY (A.cruisingrange > 1000) 

Oracle'ın eksikliği düzeltmek için nasıl hata

ORA-00907: missing right parenthesis 

üretir? Bunun yerine her bir

cevap

5

, Gordon, söylemeyi unutmuşum söylediği gibi büyük daha 1000

SELECT E.ename 
FROM Employees E 
INNER JOIN Certified C ON E.eid = C.eid 
INNER JOIN Aircraft A ON C.aid = A.aid 
GROUP BY E.ename 
HAVING MIN(A.cruisingrange) > 1000 

, ben açık için (virgülle ayrılmış) örtük adresinin katılmak sözdizimi sabit onun en küçük birini seçin ve kontrol sözdizimine katılın. Genelde örtülü birleştirme sözdiziminin kullanılmasını engellemeye çalışın, daha sonra iki tabloyla uğraşırken hatalara yol açabilir.

+1

Yea, ne kullanacağımı bilmiyordum çünkü 1000'den az yazıyordu ama 1000'den sonra bir sql yazmıştı. @JoachimIsaksson, ne dediğini yazdı :) – sagi

+0

Artı 'join' sözdizimini düzeltmişsin! –

+0

Üzgünüz, daha uzun süredir, daha önce düzeltildi. – rain