sql ile or veya and kullanarak arama ama durum biraz farklı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

sql ile or veya and kullanarak arama ama durum biraz farklı

Mesaj gönderen delphist »

S.a. Arkadaşlar. Tablom şu şekilde

STOKADI GRUPKODU
A00-001 A1
A00-001 A2
A00-001 A3
A01-002 A1
A01-002 A2
A01-003 A1
A01-004 A2

Değerli Arkadaşlar. SELECT * FROM TABLO WHERE GRUP_KODU='A1' AND GRUP_KODU='A2' dediğim zaman sadece a1 ve a2 nin bulunduğu stokkodlarını getirmek istiyorum ama bilgiler aynı fieldda olduğu için sonuç alamıyorum or kullanırsamda bu sefer de bir sürü kayıt getiriyor a1 ve 2 olanların haricinde a1 leri ve a2 leride getiriyor. Tablomda çok büyük olduğu için bunu sql ile almam gerekiyor ama bir türlü yapamadım. yardımlarınızı bekliyorum. Teşekkürler
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Eğer yanlış anlamadıysam SELECT * FROM TABLO WHERE GRUP_KODU='A1' or GRUP_KODU='A2' sorgusunda GRUP_KODU A1 ve A2 haricinde kayıt gelmez, bir hataya düşüyor olmalısın. Biraz dikkat et.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. peki teşekkür ederim cevabınız için. Peki şöyle bir şey mümkünmü. grupkodu alanının tekrarlamam aynı fielddan hem grupkodu hemde mesela grupkodu1 haline getirebilmem mümkünkü böylece and kullanabilirim ve yapmakta olduğum sql script oluşturucu daha doğru çalışacağı kanaatindeyim. Teşekkürler
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. arkadaşlar problemimi hallettim. sql cümlesi aşağıda ihtiyacı olan arkadaşlar olabilir diyerekten yazıyorum. Fakat bir de şu durum var. Makaleler bölümünde dynamic sql filtre oluşturucu bi sınıf vardı ben bunu kullanmak istiyordum ama aşağıdaki gibi sql cümlesi söz konusu oluyor

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM 
WHERE MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='BA22-01218-01')
AND MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='MF2216-0366-01')
benim oluşturacağım tüm sql kodları yukarıdaki mantık gibi hem in ile başlıyacak ve aynı stytnax da gidecek ve HAM_KODU değişecek sadece. Bu sınıfla ilgili bu işi yaptırabilmem için önerileriniz var mı...Yoksa hiç sınıfla uğraşmayıp manuel yapacağım. Şimdiden Teşekkürler
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Manual yap, yaparken de WHERE mi AND mi koyucam diye düşünmek yerine..

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM 
WHERE 1=1
AND MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='BA22-01218-01') 
AND MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='MF2216-0366-01')
AND .......
AND .......
şeklinde kurgula ve her zaman AND ile ekleyip devam et...

- Ya da bunu rantable hale dönüştür, HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01' ) şeklinde uzatacak kadar tekil hale dönüştür.
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. mrmarman abi...yalnız rantable halinde yazdığınız şekilde bu sql sonuç döndürmüyor. Baya bir denedim ben o sytnax şeklinde. Ancak yukarıda iç içe selectlerle bu sonuç dönüyor...Yardımlarınız için teşekkür ederim. Allah razı olsun...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Şimdi şu şekilde sonuç dönmüyor mu ?

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM 
WHERE 1=1 
AND MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01') ) 
- Eğer sadece bir değer dönüyor diyorsan, sorun TOP 1 demenden kaynaklı. Bu değerler varsa bulnanlardan sadece ilk bir tanesini getirir.

- Eğer amacın bu mamul kodlarından birer tane bulsun getirsin ise, O zaman TOP 1 demiycen, HAM_KODU'ları GROUP BY ile gruplucan ki tekil olarak birer birer gelsinler..
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

döndü abi döndü yanlış yazmışım..kusura bakma...:) Eyvallah
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Aklıma bir şey takıldı.

Kod: Tümünü seç

SELECT MAMUL_KODU FROM TBLSTOKURM MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01') )
sorgusuyla

Kod: Tümünü seç

SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01')
sorgusu aynı sonuç kümesini üretmez mi?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

hayır saban hocam. Üretmiyor...yukarıdaki kayıt gibi bir kayıt girin arama yapın farkı anlayacaksınız. İyi Çalışmalar
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hocam bir de şöyle dener misin ...

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01')
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. tekrardan @mrmarman abi bu da döndürdü aynı kaydı ama ben bunu yüzlerce kere denemiştim. Şimdi neden tek sorguda döndü bu kayıt anlamadım... :cry:
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Dömeseydi şaşardım bilakis...

@sabanakman demese dikkat bile etmeyecektim. Vaktim varken kısa zamanda bir çok soruya cevap yazmaya çalıştığımdan, detaylara artık girmeyip sonuca odaklanıyorum. Ondan gözümden kaçabiliyor.

- Greets to @sabanakman :lol:
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. mrmarman ve sabah hocam...aşağıdaki kod ile ilgili şöyle bir sıkıntı doğması muhtemeldir. Aşağıdaki kod bu iki üründen birini içeren ilk mamülü vermekte. Yani dolayısıyla saban abimizin bu kodda vermezmi olayına bu kod vermez abi...Bunun yanına bir tane dana ürün ekleyin...3 olarak fark ortaya çıkacaktır. Doğru olan kod ikinci kod

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01') 

Doğru Kod

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM 
WHERE MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='BA22-01218-01') 
AND MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='MF2216-0366-01') 
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

delphist yazdı:s.a. mrmarman ve sabah hocam...aşağıdaki kod ile ilgili şöyle bir sıkıntı doğması muhtemeldir. Aşağıdaki kod bu iki üründen birini içeren ilk mamülü vermekte. Yani dolayısıyla saban abimizin bu kodda vermezmi olayına bu kod vermez abi...Bunun yanına bir tane dana ürün ekleyin...3 olarak fark ortaya çıkacaktır. Doğru olan kod ikinci kod

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU IN ('BA22-01218-01', 'MF2216-0366-01') 

Doğru Kod

Kod: Tümünü seç

SELECT TOP 1 MAMUL_KODU FROM TBLSTOKURM 
WHERE MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='BA22-01218-01') 
AND MAMUL_KODU IN (SELECT MAMUL_KODU FROM TBLSTOKURM WHERE HAM_KODU='MF2216-0366-01') 
Eğer sorgu içinde TOP 1 kullanmasaydın her iki sorgu da aynı işlemi gerçekleştirir ama işiniçinde TOP 1 olunca seçeceği kaydı kestirmek pek mümkün olmuyor. Buna her halde MS SQL Server yazılımcıları cevap verebilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla