cift kayit sql

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

cift kayit sql

Mesaj gönderen Vital »

Merhaba arkadaslar;
d7 fb 2.1

soyle bir sorunum var ;
master detail olan 2 tablom var

fakat bazı kayıtları çift gösteriyor.

ibquery1.Close;

IBQuery1.SQL.Clear;
IBQuery1.SQL.add('select GENELDETAIL1.GENELDETAILID AS KAYIT_NO,GENELDETAIL1.SIPNO AS SIP_NO');
IBQuery1.SQL.add(',GENELDETAIL1.MUSTERIADI AS MUS_ADI');

IBQuery1.SQL.add(',GENELDETAIL1.PARCAADI AS PARCA_ADI,GENELDETAIL1.PARCANO AS PARCA_NO,GENELDETAIL1.MFKSTR AS MFK,METOD1.MFKSONUC');

IBQuery1.SQL.add('FROM GENELDETAIL1 INNER JOIN METOD1 ON GENELDETAIL1.GENELDETAILID=METOD1.GENELDETAILID AND GENELDETAIL1.MFKSTR='' VAR"');
//IBQuery1.SQL.add('FROM GENELDETAIL1,METOD1 WHERE GENELDETAIL1.GENELDETAILID=METOD1.GENELDETAILID AND GENELDETAIL1.MFKSTR='' VAR"');
//bu satirda ayni sonucu veriyor
ibquery1.open;

yapmak istedigim su mfk adlı islemi(var/yok) olanları alacaK.fakat bazı kayıtları çift atıyor.bir cok yontem denedim ama sonuc aynı
yanlısı nerde yapıyorum acaba?

tskler.
Garibanus
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: cift kayit sql

Mesaj gönderen aslangeri »

s.a.
kodlarınızı code tagı içerisinde yazarsanız daha okunaklı olur. netekim bana karışık geldi ve bakmadım.
birde oluşturduğunuz sql komutunu ayrı bir memoda vs. gösterirseniz daha okunaklı olur. bazen gözden kaçan şeyler olabiliyor.
birde kayıtlarınızı kontrol edin. belkide gerçektende çift kayıtlar var.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: cift kayit sql

Mesaj gönderen Vital »

hocam tskler fakat kayit tek tabloda fakat bazi kayitlari cift gosteriyor.

kısacası kod soyle;

Kod: Tümünü seç

ibquery1.Close;

IBQuery1.SQL.Clear;
IBQuery1.SQL.add('select GENELDETAIL1.GENELDETAILID AS KAYIT_NO,GENELDETAIL1.SIPNO AS SIP_NOGENELDETAIL1.MUSTERIADI AS MUS_ADI'');
IBQuery1.SQL.add(',GENELDETAIL1.PARCAADI AS PARCA_ADI,GENELDETAIL1.PARCANO AS PARCA_NO,GENELDETAIL1.MFKSTR AS MFK,METOD1.MFKSONUC');

IBQuery1.SQL.add('FROM GENELDETAIL1,METOD1 WHERE GENELDETAIL1.GENELDETAILID=METOD1.GENELDETAILID AND GENELDETAIL1.MFKSTR='' VAR"');

ibquery1.open;


veya bunuda kullansam sonuc aynı yinecift olarak listeliyor kayıtların bazılarını

Kod: Tümünü seç

IBQuery1.SQL.add('FROM GENELDETAIL1 INNER JOIN METOD1 ON GENELDETAIL1.GENELDETAILID=METOD1.GENELDETAILID AND GENELDETAIL1.MFKSTR='' VAR"');

tskler.
Garibanus
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: cift kayit sql

Mesaj gönderen aslangeri »

s.a.
distinc kullanabilirsiniz sanırım.
yada inner join yerine left inner join i denemelisiniz.
örnek kayıt ları ve çıktılarıda verseniz ona göre kodda belki bir düzenleme yapılabilir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: cift kayit sql

Mesaj gönderen Vital »

valla hocam distinct i denemistim olmadi join lerin tumunu kullandım yine ayni.

tskler.
Garibanus
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: cift kayit sql

Mesaj gönderen aslangeri »

s.a.
o zaman metod1 tablonda geneldetailid si aynı olan kayıtlar var demektir.
onu kontrol et istersen. birde yukardaki where ifadesi ile bütün alanları çek. hangi alanların farklı olduğunu görürsen problemi çözmek kolay olur.
eğer tüm alanlar aynı gelirse distinc in bu işi çözmesi lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: cift kayit sql

Mesaj gönderen Hakan Can »

Sorgulama yaptığın iki tablonun tam yapısını (primary key, foreign key'ler dahil) bildirir misin?

İki tabloyu birleştirirken tüm key alanları ile eşleştirmezsen beklediğinden fazla kayıt dönebilir. Daha doğrusu eşleştirdiğin alanlara ait ekstra kayıt sayısı kadar fazladan kayıt döner.

Sorunun bununla ilgili olabilir.
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: cift kayit sql

Mesaj gönderen Vital »

a.s
hocam oyle tuhaf bi sey ki

ornegin 163 numaralı kayıt aynı diyelim .sorguladimmi sadece 163 u (yani kayit numarasindan 163 u cektigimde )2 kayıt gorunuyor.Fakat gidip kayda baktigimda tek 163 var orda

gelde cik isin icinden .

tskler.
Garibanus
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: cift kayit sql

Mesaj gönderen conari »

PK veya FK ile alakası olduğunu sanmıyorum.
Joinlerde problem var gibi.

Kod: Tümünü seç

IBQuery1.SQL.add('FROM GENELDETAIL1 INNER JOIN METOD1 ON GENELDETAIL1.GENELDETAILID=METOD1.GENELDETAILID AND GENELDETAIL1.MFKSTR='' VAR"');
bu kod daki AND GENELDETAIL1.MFKSTR='' VAR"' ne demek onu da anlamadım.
Where nerede burda veya Join olunacak diğer alan.. :!: :!: :?:
Şöle olmasın?

Kod: Tümünü seç

IBQuery1.SQL.add('FROM GENELDETAIL1 INNER JOIN METOD1 ON GENELDETAIL1.GENELDETAILID=METOD1.GENELDETAILID) where GENELDETAIL1.MFKSTR='' VAR"');
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: cift kayit sql

Mesaj gönderen Hakan Can »

PK ve FK'yı join işlemini doğru yapıp yapmadığını tespit için sormuştum. Zira inner join'de PK veya FK örtüşmezse fazla kayıt döndürebiliyor. Tahminim sorunu da bu.

Tabi bilgileri daha net paylaşırsa durum daha bir netleşir.
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: cift kayit sql

Mesaj gönderen Vital »

hocam cevaplariniz icin tskler
deneyecegim
hakan hocam evet bir cümleyi atlamısız where dediginiz gibi yazmayi unutmusum buraya.fakat sorun o degil

geneldetail1 pk geneldetailid
metod1 pk metodid fk geneldetailid

mfkstr=''var'' demek mfk si olanlar demek yani bu bir islem sistem bu sekilde anliyor bu islemin yapilip yapilmayacagini olup olmadigini bu urun uzerinde

tskler.
Garibanus
Cevapla