Sıralama: Advanced Member
Gruplar: Registered
Katılan: 24.11.2014(UTC) Mesajlar: 34 5 Kere Teşekkür Etti. 2 Mesajına Toplam 2 Kere Teşekkür Edildi.
|
Merhaba... Şöyle bir tablomuz olduğunu düşünelim.
sinif_no ogrenci_no durum (kaldı/Geçti)
Burada basit bir SQL Sorgu ile öğrencilerinin tamamının sınıfı geçmiş olan sınıfları nasıl bulabiliriz?
Örneğin 5-A sınıfının tüm öğrencileri sınıfı geçmiş.
Aşağıdaki SQL Kod bloğu ile sonuca ulaşıyorum, ama daha basit bir yolu aklına gelen var mıdır? Örneğin Exists deyimini kullanarak gibi.
select distinct T1.sinif from( SELECT sinif from Tablo1 where durum='Geçti') as T1 left join( SELECT sinif from Tablo1 where durum='Kaldı') as T2 on T1.sinif=T2.sinif where T2.sinif is null
|
|
|
|
Sıralama: Administration
Gruplar: Administrators
Katılan: 6.05.2014(UTC) Mesajlar: 670
19 Kere Teşekkür Etti. 152 Mesajına Toplam 253 Kere Teşekkür Edildi.
|
Originally Posted by: maytas Merhaba... Şöyle bir tablomuz olduğunu düşünelim.
sinif_no ogrenci_no durum (kaldı/Geçti)
Burada basit bir SQL Sorgu ile öğrencilerinin tamamının sınıfı geçmiş olan sınıfları nasıl bulabiliriz?
Örneğin 5-A sınıfının tüm öğrencileri sınıfı geçmiş.
Aşağıdaki SQL Kod bloğu ile sonuca ulaşıyorum, ama daha basit bir yolu aklına gelen var mıdır? Örneğin Exists deyimini kullanarak gibi.
select distinct T1.sinif from( SELECT sinif from Tablo1 where durum='Geçti') as T1 left join( SELECT sinif from Tablo1 where durum='Kaldı') as T2 on T1.sinif=T2.sinif where T2.sinif is null Merhabalar Dostum sen baya bir kasmıssın :) hatta zoru başarmıssın :) sunu denersen daha kolay olur Kod:
CREATE TABLE #Sinif
(
sinif_no varchar(10),
ogrenci_no int ,
durum varchar(10)
)
insert into #Sinif (sinif_no,ogrenci_no,durum) values ('1-a',1,'GECTİ')
insert into #Sinif (sinif_no,ogrenci_no,durum) values ('1-a',2,'GECTİ')
insert into #Sinif (sinif_no,ogrenci_no,durum) values ('2-a',3,'GECTİ')
insert into #Sinif (sinif_no,ogrenci_no,durum) values ('2-a',4,'KALDI')
insert into #Sinif (sinif_no,ogrenci_no,durum) values ('3-a',5,'GECTİ')
insert into #Sinif (sinif_no,ogrenci_no,durum) values ('3-a',6,'GECTİ')
SELECT s.sinif_no FROM #Sinif s
WHERE s.sinif_no NOT IN (SELECT d.sinif_no from #Sinif d WHERE d.durum ='KALDI')
GROUP BY s.sinif_no
|
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınıztwitter.com/dbakademi Dua ve teşekkür en büyük servetlere bedel... |
|
|
|
Sıralama: Advanced Member
Gruplar: Registered
Katılan: 24.11.2014(UTC) Mesajlar: 34 5 Kere Teşekkür Etti. 2 Mesajına Toplam 2 Kere Teşekkür Edildi.
|
Mehmet hoca, cevap için teşekkürler. Gerçekten sizin çözümünüz daha basit, ancak beni yanlış anlamayın nedense Access'te denediğimde sizin örnek epey kastı, benim üstte veriğim sorgu hemen çalıştı. Sanki Group By olan sorgular diğerlerine göre daha yavaş çalışıyor, yanılıyor muyum? Eğer öyleyse bu durumda her ne kadar basit görünmesine rağmen Group BY yerine alternatifler aransa daha isabetli olmaz mı?
|
|
|
|
Sıralama: Administration
Gruplar: Administrators
Katılan: 6.05.2014(UTC) Mesajlar: 670
19 Kere Teşekkür Etti. 152 Mesajına Toplam 253 Kere Teşekkür Edildi.
|
Originally Posted by: maytas Mehmet hoca, cevap için teşekkürler. Gerçekten sizin çözümünüz daha basit, ancak beni yanlış anlamayın nedense Access'te denediğimde sizin örnek epey kastı, benim üstte veriğim sorgu hemen çalıştı. Sanki Group By olan sorgular diğerlerine göre daha yavaş çalışıyor, yanılıyor muyum? Eğer öyleyse bu durumda her ne kadar basit görünmesine rağmen Group BY yerine alternatifler aransa daha isabetli olmaz mı? Estaf, soyle diyim hocam, her sorgu her durumda farklı performans gosterir, o yüzden aslında bir seçim yapmak zor, test etmek gerekir, kayıt sayısına göre değişir |
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınıztwitter.com/dbakademi Dua ve teşekkür en büyük servetlere bedel... |
|
|
|
Forumu Atla
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.