distinct ile ilgili bir soru.
distinct ile ilgili bir soru.
Sel.al.arkadaşlar.firebird vt de bi sp yazdım .sp içeriğim şu şekilde
SELECT DISTINCT MURACAATNO,musteriadi,musterino,musterisoyad,GELISNO FROM HIZMETLER
WHERE TARIH>=:baslangictar AND TARIH<=:bitistar AND ISLEMTURU=:islemtur
into :cmuracaatno,:musteriadi,:musterino,:musterisoyad,:cgelisno
şimdi distinct kullandığım da burdaki tum alanları distinct işlemine tabi tutuyr.ben burda sadece musterino ya göre distinct işlemine tabi tutmak istiyorum.aynı zamanda diğer alanları da seçmem lazım.bu şekilde bi yapıyı nasıl oluşturabilirim.
SELECT DISTINCT MURACAATNO,musteriadi,musterino,musterisoyad,GELISNO FROM HIZMETLER
WHERE TARIH>=:baslangictar AND TARIH<=:bitistar AND ISLEMTURU=:islemtur
into :cmuracaatno,:musteriadi,:musterino,:musterisoyad,:cgelisno
şimdi distinct kullandığım da burdaki tum alanları distinct işlemine tabi tutuyr.ben burda sadece musterino ya göre distinct işlemine tabi tutmak istiyorum.aynı zamanda diğer alanları da seçmem lazım.bu şekilde bi yapıyı nasıl oluşturabilirim.
Merhaba
Efendim DISTINCT select ifadesinde yer alan butun field listesinin bir kombinasyonunu etkiliyor. Yani sadece MURACAATNO,musteriadi alanlarımız olsa;
MURACAATNO,musteriadi kombinasyonunda aynı olan kayıtlardan sadece tekini gösterecek. Haliyle MURACAATNO dan musteriadi değeri farklı birden fazla var ise bunların hepsini görürüz sorgu sonucunda.
Bu sorunun çözümü, yakın zamanda forumda karşımıza çıkan başka bir DISTINCT sorunu ile aynı. Alt sorgulardan faydalanacağız.
Efendim DISTINCT select ifadesinde yer alan butun field listesinin bir kombinasyonunu etkiliyor. Yani sadece MURACAATNO,musteriadi alanlarımız olsa;
MURACAATNO,musteriadi kombinasyonunda aynı olan kayıtlardan sadece tekini gösterecek. Haliyle MURACAATNO dan musteriadi değeri farklı birden fazla var ise bunların hepsini görürüz sorgu sonucunda.
Bu sorunun çözümü, yakın zamanda forumda karşımıza çıkan başka bir DISTINCT sorunu ile aynı. Alt sorgulardan faydalanacağız.
En son poshet303 tarafından 08 May 2006 08:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Merhaba
Yukarki script te hata yapmışım. Yeniden daha düzenli olarak yazmak gerekir ise;
Sorgu şu iken
Şu hale sokacağız.
İnşallah yine hata yapmamışızdır.
kolay gelsin.
Yukarki script te hata yapmışım. Yeniden daha düzenli olarak yazmak gerekir ise;
Sorgu şu iken
Kod: Tümünü seç
SELECT DISTINCT MURACAATNO,musteriadi,musterino,musterisoyad,GELISNO FROM HIZMETLER
WHERE TARIH>=:baslangictar AND TARIH<=:bitistar AND ISLEMTURU=:islemtur
İnşallah yine hata yapmamışızdır.
kolay gelsin.
Kod: Tümünü seç
SELECT MURACAATNO, musteriadi, musterino, musterisoyad, GELISNO FROM HIZMETLER
WHERE MURACAATNO IN (SELECT DISTINCT MURACAATNO FROM HIZMETLER WHERE TARIH>=:baslangictar AND TARIH<=:bitistar AND ISLEMTURU=:islemtur)
into :cmuracaatno,:musteriadi,:musterino,:musterisoyad,:cgelisno
Normalde GROUP BY kullanmalısınız.
Ancak sorunuz kendi içinde tutarsız. Yani hem X alanına göre DISTINCT yapacak hem de diğer Y, Z alanları da olacak. Peki bu nasıl olacak?
Eğer X alanına ait birden fazla Y alanı varsa hangisini alacak? Yok zaten X alanlarına ait birer tane Y, Z alanları varsa zaten DISTINCT doğru çalışacak.
İyi çalışmalar.
Ancak sorunuz kendi içinde tutarsız. Yani hem X alanına göre DISTINCT yapacak hem de diğer Y, Z alanları da olacak. Peki bu nasıl olacak?
Eğer X alanına ait birden fazla Y alanı varsa hangisini alacak? Yok zaten X alanlarına ait birer tane Y, Z alanları varsa zaten DISTINCT doğru çalışacak.
İyi çalışmalar.