Kayıt Sayısına Göre Şart Ekeleme

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
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Kayıt Sayısına Göre Şart Ekeleme

Mesaj gönderen pro_imaj »

Merhaba;

Kod: Tümünü seç

RZIQuery.Close;
RZIQuery.SQL.Clear;
RZIQuery.sql.Add('SELECT * FROM FINSAT488.RZI Where BarkodNo =5');
RZIQuery.Open;
Yukarıdaki kodda where cümleciğinde bir tane şart var yapmak istediğim SanalDataQuerysindeki kayıtlarkadar where cümleciği yapmak yani.

SanalDataQueryBarkodNo
3
5
7
15
100

Kod: Tümünü seç

RZIQuery.Close;
RZIQuery.SQL.Clear;
RZIQuery.sql.Add('SELECT * FROM FINSAT488.RZI Where BarkodNo =3 and BarkodNo =5 and BarkodNo =7 and BarkodNo =15 and BarkodNo =100');
RZIQuery.Open;
Yani Sanaldata querysindeki barkodno alanındaki kayıtlar kadar where cümleciği kullanmak

Not: Sabit bir aralık olmadığı için between kullanamıyorum

Saygılarımla
Teşekkür Ederim
En son pro_imaj tarafından 22 Ara 2005 09:34 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Başlığı daha açıklayıcı hale getirir misin? :)

Bunu yapmanın birçok yolu var. Ben kendi bileşenimi yazdım bunun için. Gayet kolay bir şekilde istediğini yapıyor.

bkz. Makaleler

viewtopic.php?t=8668&highlight=sql+filtre
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba Coderlord hocam;
İlginiz için teşekkür ederim.

Ben sorunumu çözdüm Şöyleki;

Kod: Tümünü seç

procedure TfrmMain.ListeyiGurupla (Key:Word);
begin
RZIGurupQuery.Close;
RZIGurupQuery.SQL.Clear;
RZIGurupQuery.sql.Add('SELECT FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.MalKodu, FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod13, FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod14,');
RZIGurupQuery.sql.Add('FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod7, Sum(FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Tutar3) AS ToplaTutar3,  ');
RZIGurupQuery.sql.Add('Sum(FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Miktar3) AS ToplaMiktar3,  ');
RZIGurupQuery.sql.Add('Sum(FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.BlkMiktar) AS ToplaBlkMiktar,  ');
RZIGurupQuery.sql.Add('Sum(FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.PromosyonMiktar) AS ToplaPromosyonMiktar,  ');
RZIGurupQuery.sql.Add('Sum(FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod12) AS ToplaKod12 ');
RZIGurupQuery.sql.Add('FROM FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI ');
RZIGurupQuery.sql.Add('Where FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.BarkodNo ='''+SanalDataBarkodNo.Text+'''');
RZIGurupQuery.sql.Add(' ');
RZIGurupQuery.sql.Add(' ');
//SanalData.Next;
SanalData.First;
    While not SanalData.eof do
    begin
    RZIGurupQuery.sql.Add('or BarkodNo ='''+SanalDataBarkodNo.Text+'''');
    SanalData.Next;
    end;

RZIGurupQuery.sql.Add('GROUP BY FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.MalKodu, FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod13,');
RZIGurupQuery.sql.Add('FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod14, FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI.Kod7');
RZIGurupQuery.sql.Add('');
RZIGurupQuery.sql.Add('');
RZIGurupQuery.sql.Add('');
RZIGurupQuery.sql.Add('');
memo1.lines.add (RZIGurupQuery.sql.text);
RZIGurupQuery.Open;
end;

procedure TfrmMain.BarcodeleriListele(Key:Word);
begin
RZIQuery.Close;
RZIQuery.SQL.Clear;
RZIQuery.sql.Add('SELECT * FROM FINSAT4'+frmMain.SirketQueryKaynakSirketKod.Text+'.RZI Where BarkodNo ='''+SanalDataBarkodNo.Text+''' ');
//SanalData.Next;
SanalData.First;
    While not SanalData.eof do
    begin
    RZIQuery.sql.Add('or BarkodNo ='''+SanalDataBarkodNo.Text+'''');
    SanalData.Next;
    end;
memo1.lines.add (RZIQuery.sql.text);
RZIQuery.Open;
end; 


Yukarıda görmüş olduğunuz gibi sql ifadesini auto oluşturuyorum.

Saygılarımla
Teşekkür Ederim.

Not: Biraz yoğunum mazur görün lütfen kodları tam ayrıştıramadım galiba.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Güzel olmuş da .. Başlığı daha açıklayıcı birşeyle değiştirmemişsin. :) Arayanlara bulması kolay olur.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba @coderlord hocam
Senimi kırayım ya nedemek hemen değiştiriyorum. :D Şaka bir yana haklısınız hocam işler çok yoğun inanın "Ben Bende Değilim"

Saygı ve sevgilerimle
Teşekkür Ederim
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba Hocam,
Kodun kalabalığından sizin kodu incelemeye cesaret edemedim. :lol:
Ama aşağıdaki kodu bir inceleyin.

Kod: Tümünü seç

CREATE TABLE BARKOD (
    KAYITNO   INTEGER,
    BARKODNO  INTEGER
);
INSERT INTO BARKOD (KAYITNO, BARKODNO) VALUES (1, 3);
INSERT INTO BARKOD (KAYITNO, BARKODNO) VALUES (2, 5);
INSERT INTO BARKOD (KAYITNO, BARKODNO) VALUES (3, 7);
INSERT INTO BARKOD (KAYITNO, BARKODNO) VALUES (4, 15);
INSERT INTO BARKOD (KAYITNO, BARKODNO) VALUES (5, 100);

COMMIT WORK;

ve


Kod: Tümünü seç

CREATE TABLE PRO_IMAJ (
    KAYITNO   INTEGER,
    ACIKLAMA  VARCHAR(50),
    BARKODU   INTEGER
);
  örnek verileri
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (1, 'DOMATES', 3);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (2, 'PATLICAN', 5);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (3, 'SALATALIK', 7);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (4, 'HAVUC', 15);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (5, 'ENGINAR', 100);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (6, 'PORTAKAL', 43);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (7, 'ELMA', 63);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (8, 'ARMUT', 75);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (9, 'KAYISI', 80);
INSERT INTO PRO_IMAJ (KAYITNO, ACIKLAMA, BARKODU) VALUES (10, 'SEFTALI', 12);

COMMIT WORK;
istediğinize yakın bir çıktı için de aşağıdaki kodu kullandım.

Kod: Tümünü seç

SELECT * FROM PRO_IMAJ WHERE BARKODU IN(SELECT BARKODNO FROM BARKOD)

Yukarıdaki komut PRO_IMAJ tablesinde barkodu 3,5,7,15,100 olanları tek gösteriyor. Diğerlerini göstermiyor.

Umarım işinize yarar diyemiyorum. Çünkü zaten halletmişsiniz. :lol:
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba @ofenX hocam;

Yüreğinize emeğinize sağlık çok teşekkür ederim.

Bu arada benim koda gelince artık kod düzenleyici kullanıyorum bu yüzden birdaha böyle bir sıkıntı yaşanmayacağından emin olabilrsiniz.

Saygılarımla
Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba Hocam,
pro_imaj yazdı: Bu arada benim koda gelince artık kod düzenleyici kullanıyorum bu yüzden birdaha böyle bir sıkıntı yaşanmayacağından emin olabilrsiniz.
Ben kodunuzu düzenlemediğiniz için söylememiştim. Sizi görüyorum ara program yaptığınız için genelde uzun queryler yazmak zorunda kalıyorsunuz. Ben de sql tam kullanamadığım için için yazdıklarınıza dalmaya cesaret edemiyorum. O yüzden söyledim. :oops: :oops:

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

ofenX yazdı:

Ben kodunuzu düzenlemediğiniz için söylememiştim. Sizi görüyorum ara program yaptığınız için genelde uzun queryler yazmak zorunda kalıyorsunuz. Ben de sql tam kullanamadığım için için yazdıklarınıza dalmaya cesaret edemiyorum. O yüzden söyledim. :oops: :oops:
Merhaba; Hocam Böyle düşündüğünüz için teşekkür ederim ama forumda daha anlaşılır daha güzel soru ve cevaplar için kodlarımı Düzenliyeceğim artık.

Ayrıca ara yazılımlar yaptığımı biliyor olmanız sevindirici çünkü istediğim gibi at koşturamıyorum herşey sorun oluyor.

Bu arada sizinde SQL bilginizin üst seviyede olduğunu verdiğiniz cevaplardan anlayabiliyorum.

Sağlıcakla kalın hocam.

Saygı ve sevgilerim.

Çalışmalarınızdaki başarılarınızın daim olması dileğiyle.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Cevapla