logo
Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
maytas  
#1 Gönderildi : 3 Aralık 2014 Çarşamba 04:21:33(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

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
mehmetzekikir  
#2 Gönderildi : 3 Aralık 2014 Çarşamba 11:23:08(UTC)
mehmetzekikir

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 Go to Quoted Post
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ız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
maytas  
#3 Gönderildi : 3 Aralık 2014 Çarşamba 13:19:22(UTC)
maytas

Sıralama: Advanced Member

Gruplar: Registered
Katılan: 24.11.2014(UTC)
Mesajlar: 34
Turkey

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ı?
mehmetzekikir  
#4 Gönderildi : 3 Aralık 2014 Çarşamba 15:16:15(UTC)
mehmetzekikir

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 Go to Quoted Post
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ız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...


Bu konudaki kullanıcılar
Guest (3)
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.