• 17-02-2023, 17:27:14
    #1
    Merhaba arkadaşlar,

    oracle sql'de iki koşuluda sağlayan kişileri getirmek istiyorum ama bir türlü istediğim sonuca varamadım, bir trx tablosunda son 1 saat içerisinde hem x kitabını satın alanları hem de y kitabını satın alanları bulmam gerekiyor AND kullanınca saptırıyor nasıl bir sonuç çıkartabilirim? örnek sql kodu aşağıda mevcuttur.

    select
    1 as Param1
    from TRANSACTION a0
    where (a0.IND = :Ind
    and a0.NUM = :Num
    and ( a0.DATE >= (:Date - (1 / 24))
    and a0.TYP = '02'
    and ( a0.CHANNEL ='7' or a0.channel = '2' )
    and a0.CDE2 = '4020') -- 4020 Kodu x kitabını satın alanı
    and ( a0.DATE >= (:trxTranDate - (1 / 24))
    and a0.TYP = '02'
    and ( a0.CHANNEL ='7' or a0.channel = '2' )
    and a0.TRX_TRAN_CDE2 = '4004')) --4004 y kitabını satın alanı
  • 17-02-2023, 17:36:42
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    Sorgunuzu
    bu şekil
    kod bloğu içerisine alıp yazabilir misiniz?

    Ve tablo, dönen sonuç bu bilgileri de paylaşırsanız yardımcı olmaya çalışayım.
  • 17-02-2023, 17:38:47
    #3
    Bu sorguda AND kullanımı doğru, ancak her bir koşulu ayrı bir WHERE bloğunda yazmanız gerekiyor. Ayrıca, aynı alan için birden fazla koşul kullanmak yerine IN operatörünü kullanabilirsiniz. Aşağıdaki örnek kod, son 1 saat içinde hem '4020' kodlu x kitabını satın alanları hem de '4004' kodlu y kitabını satın alanları getirecektir:
    SELECT *
    FROM TRANSACTION
    WHERE IND = :Ind
    AND NUM = :Num
    AND DATE >= (:trxTranDate - (1 / 24))
    AND TYP = '02'
    AND CHANNEL IN ('7', '2')
    AND CDE2 = '4020'
    AND TRX_TRAN_CDE2 = '4004';
    Burada AND operatörü kullanarak tüm koşulların sağlanmasını sağlıyoruz. Ayrıca, IN operatörünü kullanarak CHANNEL alanı için birden fazla koşul yazmaktan kaçınıyoruz. SELECT ifadesindeki '*' tüm sütunları getirecektir. Sorguyu kendi gereksinimlerinize göre özelleştirebilirsiniz.
  • 18-02-2023, 02:07:26
    #4
    google -> having count

    ornek

    SELECT musteri_id
    FROM satis_detay WHERE KITAP_ID IN ('X','Y')
    group by musteri_id
    having count(*)>1
  • 20-02-2023, 09:02:01
    #5
    Kuarx adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Sorgunuzu
    bu şekil
    kod bloğu içerisine alıp yazabilir misiniz?

    Ve tablo, dönen sonuç bu bilgileri de paylaşırsanız yardımcı olmaya çalışayım.
    Kod bloğu içerisine aldım hocam.
  • 20-02-2023, 09:06:42
    #6
    xidecn adlı üyeden alıntı: mesajı görüntüle
    Bu sorguda AND kullanımı doğru, ancak her bir koşulu ayrı bir WHERE bloğunda yazmanız gerekiyor. Ayrıca, aynı alan için birden fazla koşul kullanmak yerine IN operatörünü kullanabilirsiniz. Aşağıdaki örnek kod, son 1 saat içinde hem '4020' kodlu x kitabını satın alanları hem de '4004' kodlu y kitabını satın alanları getirecektir:
    SELECT *
    FROM TRANSACTION
    WHERE IND = :Ind
    AND NUM = :Num
    AND DATE >= (:trxTranDate - (1 / 24))
    AND TYP = '02'
    AND CHANNEL IN ('7', '2')
    AND CDE2 = '4020'
    AND TRX_TRAN_CDE2 = '4004';
    Burada AND operatörü kullanarak tüm koşulların sağlanmasını sağlıyoruz. Ayrıca, IN operatörünü kullanarak CHANNEL alanı için birden fazla koşul yazmaktan kaçınıyoruz. SELECT ifadesindeki '*' tüm sütunları getirecektir. Sorguyu kendi gereksinimlerinize göre özelleştirebilirsiniz.
    Merhaba,

    Değerli yorumunuz için teşekkür ederim fakat sorgu istediğim gibi yine çalışmadı maalesef, son 1 saat içerisinde x ve y kitabını satın alanları çekmem gerekiyor, bu önce y sonra x kitabıda olabilir, sorguyu çalıştırdığım zaman boş getiriyor.