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

  • Madeon

    Madeon

    31 Ocak 2010
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011

İLGİLİ SORU / CEVAPLAR