distinct ile ilgili bir soru.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

distinct ile ilgili bir soru.

Mesaj gönderen meron06 »

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.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

distinc sadece önünde bulunduğu alanı etkiler. Bence başka bir yanlışlık var.
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

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.
En son poshet303 tarafından 08 May 2006 08:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

poshet303 kardeş .yzmış olduğun sorguyu nasıl kullanacağım .biraz anlatabilirmisiniz.yukarda yazdığım sorguya nasıl uyarlarım .
poshet303
Üye
Mesajlar: 235
Kayıt: 26 Eki 2005 01:15

Mesaj gönderen poshet303 »

Merhaba
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 
Şu hale sokacağız.

İ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 
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Soru açık değil :!: Ne yapmak istediğinden çok DISTINCT ile nasıl yaparım narzında olmuş :!:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

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.
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

Arkadaşlar cevaplarınız için çok tşekkür edrim .hepinize iyi çalışmalar.soruda verdğim sorgu sorunsuz çlışıor aslında.ama 5 alana göre distinct işlemi yapmak mantıksız gelmişti.
Cevapla