SORU
12 ŞUBAT 2012, Pazar


SQL - VS yiyor

İki tablo var:

1. Lecturers (LectID, Fname, Lname, degree).
2. Lecturers_Specialization (LectID, Expertise).

En Uzmanlaşma ile Öğretim Görevlisi bulmak istiyorum. Bu çalıştığımda çalışmıyor:

SELECT  L.LectID,Fname,Lname
FROM Lecturers L,Lecturers_Specialization S
WHERE L.LectID=S.LectID and COUNT(S.Expertise)>=ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID); 

Ama bu deneyin, çalışır:

SELECT  L.LectID,Fname,Lname
FROM Lecturers L,Lecturers_Specialization S
WHERE L.LectID=S.LectID
GROUP BY L.LectID,Fname,Lname
HAVING COUNT(S.Expertise)>=ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID); 

Sebebi nedir? Teşekkürler.

CEVAP
12 ŞUBAT 2012, Pazar


7* *fıkra bir şartla tanıttıtek satır; HAVING tanıtır bir koşul tümcesitoplamalardanyani tek bir sonuç, say, ortalama gibi, min nerede seçim sonuçları, max ve sum, üretilmiştirbirden fazlasatır. Sorgunuza HAVING düzgün çalışır dolayısıyla durumu (bir toplama bir durum yani) ikinci bir tür için çağırır.

Genel bir kural olarak, WHERE GROUP BY GROUP BY *sonra 12* önce kullanın. Oldukça ilkel bir kuraldır, ama vakaların 'dan fazla yararlıdır.

Bunu yaparken, yeniden yazmak sorgunuza birleşim: ANSI sürümü kullanarak isteyebilirsiniz

SELECT  L.LectID, Fname, Lname
FROM Lecturers L
JOIN Lecturers_Specialization S ON L.LectID=S.LectID
GROUP BY L.LectID, Fname, Lname
HAVING COUNT(S.Expertise)>=ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID)

Bu bir olarak kullanılan WHERE ortadan kaldıracaktırbirleştirme koşulu teta.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KarnasCamillo

    KarnasCamill

    24 EKİM 2007
  • Samantha Crain

    Samantha Cra

    30 EKİM 2008
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011

İLGİLİ SORU / CEVAPLAR