select ederken farklı bir karşılaştırma sonucu süzme

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

ISNUMERIC pek kaale alınmadı galiba.

Onun yerine LIKE kullanımını deneyebilirsin.

Aslında verdiğin örnekteki gibi ise LIKE da direk işini görecektir. Standart SQL'in dışına da çıkmana gerek yok.

STOK_KODU LIKE '%YM%'...
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

@Hakan_Can
like komutu ile nasıl bir karşılaştırma yapabilirim,
ve stok kodu ile işim yok işim fiş numaraları ile,
çözümün bana uzak geldiği için fazla deneme yapmadım sorgunu oluşturabilirsen deneyebilirim.

Naile Hn. Tabiki o şekilde girişler var faturalı hammadde girişleri en önemli örnek ama mesaj bundan kaynaklanıyor ise tek bir stok için deniyorum hemen

Denedim
sorgu hata mesajı vermedi lakin 0 döndü bilerek bir kayıt girmiştim.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Şöyle bir query deneyebilirsin:

Kod: Tümünü seç

SELECT
  T1.*
FROM STOKHAREKET T1
WHERE T1.fisno LIKE '%YM%' AND NOT EXISTS
  (
   SELECT
     T2.fisno
   FROM STOKHAREKET T2
   WHERE ISNUMERIC(T2.fisno) = 1 AND SUBSTRING(T1.fisno, 13, 5) = SUBSTRING(T2.fisno, 13, 5)
   )
STOKHAREKET mevcut tablonun adıyla değiştirilmeli.

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

Mesaj gönderen conari »

Sabit tablolara Join yaparak tablodaki hareketleri kısıp denedim şu an çalışıyor gibi.
Hatalı girilen fişleri göz önüne alırsak sanırım mevcut kayıtları verecek. Kontrollerimi yapıp belirtirim.

Teşekkürler
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

@Hakan
Oluşturduğun sorgu için teşekkürler,
İlk başlarda biraz ters gelmişti ama şu an çalışıyor.

sorguyu biraz daha geliştirmeye çalışacağım.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Murats
Üye
Mesajlar: 33
Kayıt: 02 Nis 2007 12:20
Konum: Kocaeli Gebze

Mesaj gönderen Murats »

Buna benzer bir sıkıntıda ben çekiyorum.

Kullanmakta oldugum bir otomasyon programı var. Kullanıcılar buraya hasta kayıtlarını girmekte ama ne yazık ki bazen kimlik üzerindeki verileri düzgün yazamıyorlar ve mükerrer kayıt oluşturuyorlar.

Ben bunları tespit etmek için aşağıdaki gibi bir komut kullanıyorum. Daha sonra ise program içerisindeki bir modul yardımı ile bunlaro birleştirip fazla kaydi siliyorum.

Kod: Tümünü seç

SELECT 
  dbo.HASTA.MERNIS_NO,
  COUNT(*) AS SAYI
FROM
  dbo.HASTA
GROUP BY
  dbo.HASTA.MERNIS_NO
HAVING
  COUNT(*) > 1
Çıkan sonuç aşağıdaki gibi oluyor.



Kod: Tümünü seç

MERNIS_NO            SAYI        
-------------------- ----------- 
10667179568          2
10689110310          2
11207173800          2
11330668266          2
Burada hasta T.C Kimlik numaralarından bir arama yapamadığım için çıkan her sonucu

Kod: Tümünü seç

Select HASTA_ID,MERNIS_NO from hasta where MERNIS_NO=10667179568
gibi sorgu ile tek tek kontrol edip ID leri görmek zorunda kalıyorum.

İlk sorgumun sonucunda MERNIS_NO ları alıp diğer komutu çalıştırması biraz karmaşık geliyor ama sanki şu anlatttıklarınızı biraz inceleyince yapılabilir gibide görünüyor.

Ayrıca çok usta bir SQL kullanıcısı değilim o nedenle örnekleri anlayamıyorum.

Eğer yardımcı olursanız. Çok sevineceğim. Birde ilk sorgum içerisine değeri boş olanları eklemez ise daha sağlam bir sonuç elde ederim.

Şimdiden teşekkür ediyorum.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

IS NOT NULL Kullanabilirsin boşlar gelmesin diyorsan

Kod: Tümünü seç

SELECT 
  dbo.HASTA.MERNIS_NO, 
  COUNT(*) AS SAYI 
FROM 
  dbo.HASTA
where IS NOT NULL ALANIMM
....
Mernis noyu girdiği zaman edit in onexit de bir select çekip var olup olmadığını görürsün veya ID gibi bu alanı primary veya forign key olarak belirleyebilirsin. dublike olmaz.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Murats
Üye
Mesajlar: 33
Kayıt: 02 Nis 2007 12:20
Konum: Kocaeli Gebze

Mesaj gönderen Murats »

conari yazdı:IS NOT NULL Kullanabilirsin boşlar gelmesin diyorsan

Mernis noyu girdiği zaman edit in onexit de bir select çekip var olup olmadığını görürsün veya ID gibi bu alanı primary veya forign key olarak belirleyebilirsin. dublike olmaz.

Açıkcası belki vermiş olduğunuz cevap yeterli bir cevap olabilir. Ama nedense sonucu değiştirmedi. Ayrıca diğer sorum için bir cevap verdiniz mi anlayamadım.

İlk yazdiğim gibi DB yi ben oluşturmadım sadece tarayarak bazı olmayan işlemleri kendim kontrol ederek mukerrer kayıtları kullanıcılara sildirmek istiyorum.


Yinede ilginiz için teşekkür ederim.
Murats
Üye
Mesajlar: 33
Kayıt: 02 Nis 2007 12:20
Konum: Kocaeli Gebze

Mesaj gönderen Murats »

Sıkı bir aramadan sonra bir arkadasın yardımya bir yerde örnek buldum.

http://www.mximize.com/?cat_id=0E240F23 ... 360A3BFAC2

istediğim kod şu hale geldi ..

Kod: Tümünü seç

SELECT HASTA_ID,MERNIS_NO,HASTA_ADI,HASTA_SOYADI
FROM HASTA(nolock)
WHERE UPPER(MERNIS_NO) IN(SELECT UPPER(MERNIS_NO) AS MERNIS_NO
FROM HASTA(nolock)
GROUP BY MERNIS_NO
HAVING (COUNT(UPPER(MERNIS_NO))>1 AND NOT LEN(MERNIS_NO)<11))
ORDER BY
MERNIS_NO
Cevapla