İki Tablodan Sorgu Oluşturmada Boş Kayıtları Gösterme

30/06/2015, 16:41

Allback

Merhaba,



ekteki örnekte iki tane tablo var.
1-) standartlar_listesi_tablosu
2-) revize_standartlar_tablosu

Bu iki tablodan sorgu oluşturmak istiyorum. Sorguda standart listesi tablosunun tamamı olacak, ilave olarak revizyon tablosundan da aynı standart numarasına sahip kaydın en son (en çok) "revizyon_no" bilgisi ile bu revizyon numarasına ait olan "revizyon_tarihi" bilgisinin gelmesini istiyorum.

Sorun şu, her standarda karşılık gelen revizyon olmadığı için, sadece revizyon yapılmışlar listeleniyor. Ben tüm standartların listelenmesini varsa revizyon bilgilerinin de görünmesini istiyorum. Revizyon olmayanların ilgili satırı boş gelsin.
30/06/2015, 19:42

atoz112

sayın Allback,

bahsettiğiniz talebinize yönelik olarak aşağıdaki bilgi edinme adına şu yorumların paylaşılması uygun görülmüştür.

1)
Alıntı:...Ben tüm standartların listelenmesini varsa revizyon bilgilerinin de görünmesini istiyorum...

ifadenizdeki,varsa revizyon bilgilerinin de görünmesi derken,kast ettiğiniz;sadece
revizyon_no ve revizyon_tarihi bilgileri mi?

2)
Alıntı:...her standarda karşılık gelen revizyon olmadığı için, sadece revizyon yapılmışlar listeleniyor...

ifadenizdeki,sadece revizyon yapılmışlar listeleniyor derken,kast ettiğiniz;
statü alanındaki OK değerine uygun değerlerin getirilmesi mi?

3)
Alıntı:...Revizyon olmayanların ilgili satırı boş gelsin...

ifadenizdeki,Revizyon olmayanların derken,kast ettiğiniz;
statü alanında Hazırlanacak ve Revize Edilecek yazılı olan değerlerin BOŞ gösterilmesi mi?

paylaşacağınız bu bilgileri,gerek yazılı net anlatımlar ile ya da gerekse de ekran görüntüsü üzerinde anlatımlar ile net açıklamalarda bulunduğunuz takdirde,katılımcılar tarafından daha verimli ve geçerli paylaşımların yapılmasını sağlamış olacaksınız.

yine de,bir ön bilgi olması adına,
eğer bütün bunların yanıtı EVET ise,o zaman;aşağıdaki Sql kod ifadesini bir sorgu oluşturup Sql göster tasarım sayfasında ekleyip deneyebilirsiniz.

Kod:
SELECT standartlar_listesi_tablosu.id, standartlar_listesi_tablosu.std_no, standartlar_listesi_tablosu.std_adi, standartlar_listesi_tablosu.std_sinifi, standartlar_listesi_tablosu.std_türü, standartlar_listesi_tablosu.std_klasörü, standartlar_listesi_tablosu.hazirlayan, standartlar_listesi_tablosu.hazirlama_tarihi, standartlar_listesi_tablosu.statü, revize_standartlar_tablosu.revizyon_no, revize_standartlar_tablosu.revizyon_tarihi
FROM standartlar_listesi_tablosu LEFT JOIN revize_standartlar_tablosu ON standartlar_listesi_tablosu.std_no = revize_standartlar_tablosu.std_no;

bilginize...iyi çalışmalar,saygılar.
01/07/2015, 08:15

Allback

Sn. atoz112,

1. sorunuzun cevabı: "Evet". Aslında ilk başta bu sorunun cevabını açık bir şekilde belirtmeye çalışmıştım.

Alıntı:...standart listesi tablosunun tamamı olacak, ilave olarak revizyon tablosundan da aynı standart numarasına sahip kaydın en son (en çok) "revizyon_no" bilgisi ile bu revizyon numarasına ait olan "revizyon_tarihi" bilgisinin gelmesini istiyorum.

2. sorunun cevabı: "Hayır". Sadece revizyon olmuşlar listeleniyor derken, sorguya revize_standartlar_tablosundan revizyon_no ve revizyon_tarihi alanlarını ekleyince sadece revize standart tablosundaki kayıtlar geliyor demek istemiştim. Yani toplam 238 kayıt gelmesi gerekirken, sadece 77 kayıt geliyor.

3. sorunun cevabı: "Hayır". Aslında 2. ve 3. sorunun cevabı aynı. Revizyon olmayanların derken,kast ettiğim; Sorgu oluşunca revize_standartlar_tablosunda eşleşmesi olmayanların yani herhangi bir revizyon_no ve revizyon_tarihi kaydı olmayanların sorgu satırında boş gelmesini istiyorum.


Değerli vaktinizi ayırdığınız için çok teşekkürler
01/07/2015, 11:29

atoz112

Sayın Allback,

Açıklamalarınızdan yola çıkılarak,aşağıdaki paylaşımların yapılması uygun görülmüştür.

1)
Alıntı:...toplam 238 kayıt gelmesi gerekirken, sadece 77 kayıt geliyor...

ifadenize yönelik olarak,238 kayıt yerine 77 kayıt gösterme durumunun nedeni,sorguda birleştirilmek istenen alanların hatalı birleştirilmesinden dolayıdır.bunun için de,bir önceki mesajda yazılı Sql sorgu ifadesini deneyip incelediğinizde görülecektir ki istediğiniz gibi 238 kayıt listelenecektir.

Kendi kullandığınız sorguda eğer bahsettiğiniz sorun söz konusu ise,bunun için yapmanız gereken,(örnekteki kalıbı baz alabilirsiniz);

a) Her iki tablodan std_no adlı alanları birleştirmelisiniz.

b) Tablolar arasında oluşan birleştirme doğrusu üzerinde sağ tuşa basınız.

c) Ekranda belirecek olan Birleştirme Özellikleri penceresinde muhtemelen 1.seçenek işaretli olacağından 
dolayı,siz;2.seçeneği işaretleyip TAMAM butonuna basarak pencereyi kapatınız.

Böylece,istediğiniz 238 kayıt listelenmiş olacaktır.daha önce yazılı olan Sql sorgu ifadesi,mesaja ekli bulunan örnek uygulama içerisinde kullanılmak üzere mevcut bulunmaktadır.

2) 
Alıntı:...revize_standartlar_tablosunda eşleşmesi olmayanların yani herhangi bir revizyon_no ve revizyon_tarihi kaydı olmayanların sorgu satırında boş gelmesini istiyorum...

ifadenize yönelik olarak,yine,yukarıda yer alan Sql sorgu ifadesi uygulandığında görülecektir ki;eşleşmesi olmayan kayıtların revizyon_no ve revizyon_tarihi alanları içerisinde herhangi bir değer verisi olmaksızın BOŞ şekilde listelenmiş olacaktır.

EK'te;
bahsettiğiniz talebinize yönelik olarak hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

NOT:
sizin eklediğiniz uygulamadaki sorguda,STATÜ alanı ekli değildi.yeni sorguda bu alan da dahil edildi.böylece,tüm kayıtların durumları da net şekilde gözlenmiş oldu.bilginize.

İyi çalışmalar,saygılar.
01/07/2015, 12:51

Allback

Sn. atoz112

Çok teşekkürler. Dediğiniz gibi std numarasından ilişki kurup, "Birleştirme Özelliklerinden" 2. seçeneği seçince (benim 1. seçenek seçiliymiş) istediğim oldu.

Revize edilenler tablosunda aynı kayıt 1'den fazla olunca bu seferde 238'den fazla kayıt geliyordu. revizyon_no ve revizyon_tarihi alanlarının Toplam özelliğini "EnÇok" yapınca tam istediğim oldu.

Statü hanesini bilerek eklememiştim. Sorguda görünmesine gerek yoktu. Her şey için çok teşekkürler