SQL - AS komutu ile Tek Tablolda İç İçe Select Kullanımı

Mart 18, 2017 Mustafa BÜKÜLMEZ 0 Yorum


Selamlar arkadaşlar,
Bu dersimizde tek tablo üzerinden iç içe select sorgusu yazdığımızda  (yani ana sorgu da Tablo1 üzerinde alt sorgularda Tablo1 üzerinde) şart olarak ID verdiğimizde alt sorguların sonuçlarının null gelmesi sorunun çözümünü anlatmaya çalışacağım. 
Birbirine bağlı kayıtlar arasında bir analiz yapmamız gerektiğinde bu sorunla karşılaşıyoruz.
Örn. URETIM_KAYITLARI tablomuzda 5 kaydımız var. 1. kayıt Giriş bilgisi kaydı diğer 4 kayıtta çıkış bilgi kaydı. Çıkış bilgisi kayıtlarının bir stununda da (örn SpecID) giriş kaydının ID bilgisini tutuyoruz diyelim.
Sorgu şu şekilde;
SQL
select 

 (select sum(GirisKG)  as  KG  from URETIMKAYITLARI  WHERE SpecID = ID)-- Çıkış bilgisi Kaydı
,(select sum(GirisGen) as  GEN from URETIMKAYITLARI  WHERE SpecID = ID)-- Çıkış bilgisi Kaydı
,*

 from URETIMKAYITLARI 
Sorgumuzu bu şekilde hazırladığımızda alt sorgulardan gelen sonuç her zaman NULLoluyor. Sebebini tam olarak bende bilmiyorum ama tablo ve stun adları aynı olduğundan karıştırıyor olabilir diye düşünüyorum. Ancak çözümü var. O çözümde stunları isimlendirmemize yarayan " AS " ' da. Daha fazla uzatmadan yukarıdaki sorgunun çalışan halini yazayım. 
SQL
select 

 (select sum(GirisKG) as  KG  from URETIMKAYITLARI as CikisUretimKaydi  WHERE CikisUretimKaydi.SpecID = GirisUretimKaydi.ID)
,(select sum(GirisGen) as GEN from URETIMKAYITLARI as CikisUretimKaydi  WHERE CikisUretimKaydi.SpecID = GirisUretimKaydi.ID)
,*

 from URETIMKAYITLARI as GirisUretimKaydi
Örnek kodda gördüğünüz gibi AS kullanarak tablomuzuda isimlendirdik. Bu şekilde alt sorgulardaki tablonun farklı bir tablo gibi görünmesine ve bu şekilde sorgunun sorunsuz bir şekilde çalışmasını sağladık.

Bu dersimizde bu kadar arkadaşlar.
Diğer derslerimizde görüşmek üzere.

0 Yorum: