• 17-01-2021, 15:47:02
    #1
    <?php
    $totalL = $this->db->query("SELECT SUM(paid_price) as total_price FROM payment_log WHERE json != '{}' AND is_active = 1")->result()[0]->total_price + $this->db->query("SELECT SUM(price) as tprice FROM payment_notifications WHERE status = 1")->result()[0]->tprice;
    ?>
    Merhaba arkadaşlar toplayan kısım burası fakat şöyle bir sorun var ;
    1 - Databasede json diye bir alan var bu ödeme saglayıcından geliyor veriler buraya, işte ödeme durumu mesajı tutar vs..
    2- Yukarıdaki attığım kodda siteye yapılan tüm ödemeleri topluyor, fakat is_active=1 hem başarısız ödemelerde hemde başarılıalrda yazdığı için başarısız ödemeleride topluyor..
    3 - Bundan dolayı json eşit değildir boş demiş ya ben oraya şunu yazmam lazım json içinde yazanlarda ( bir sürü veri yazıyor orada ) "islem_sonucu":"2" veya "status":"success" olanların değerlerini topla demem lazım.. ( 2 farklı ödeme yöntemi var birinde başarılı olan 2 ile dönüyor diğerinde sucsess olarak dönüyor.


    Kısacası : WHERE json != '{}' AND is_active = 1" şu kısımda json == xxxxx AND is_active=1 benim şu xxx i bulmam laızm dünden beri deniyorum beceremedim..

    bu jdatabasede json içinde şöyle yazılar var ;

    {"siparis_id":"xxxxx==","tutar":"3.00","islem_sonu cu":"2","islem_mesaji":"u00d6deme iu015flemi bau015faru0131 ile onaylandu0131.","hash":"xxxx","pay_label":"Bank Transfer","installment_count":"1","subscriberId":" "}

    yani benim yukarıdaki attıgım kodda toplama işini yaptırırken json sütunundan islem_sonucu:2 veya status:sucsess i denetletmem lazım .. Yardımcı olabielceklere çok teşekkürler.
  • 17-01-2021, 16:13:39
    #2
    ..... WHERE JSON_CONTAINS(json, '2', '$.islem_sonucu')
  • 17-01-2021, 16:20:55
    #3
    WHERE json->'$.islem_sonucu' IN(2)
    Bunu da kullanabilirsin..
  • 17-01-2021, 16:27:11
    #4
    strong adlı üyeden alıntı: mesajı görüntüle
    WHERE json->'$.islem_sonucu' IN(2)
    Bunu da kullanabilirsin..
    Yaptım hata vermedi ama değer 0 kaldı normaldeo json dediğim yerde kondua attığım gibi bir sürü veri yazıyor ondanmı kaynaklandı acaba yani sadece o değeri mi arıyor, işte payment idsinden tutun bir sürü şey ama fark islem_sonucu değişkeni..

    Birde diger ödeme yönteminde de status : sucsess var bunuda belirtmem gerekecek.
  • 17-01-2021, 16:29:57
    #5
    Euphrates adlı üyeden alıntı: mesajı görüntüle
    Yaptım hata vermedi ama değer 0 kaldı normaldeo json dediğim yerde kondua attığım gibi bir sürü veri yazıyor ondanmı kaynaklandı acaba yani sadece o değeri mi arıyor, işte payment idsinden tutun bir sürü şey ama fark islem_sonucu değişkeni..

    Birde diger ödeme yönteminde de status : sucsess var bunuda belirtmem gerekecek.
    Örnekleri türetebilirsin
    WHERE json->'$.status' IN(success) ...
  • 17-01-2021, 16:32:00
    #6
    strong adlı üyeden alıntı: mesajı görüntüle
    Örnekleri türetebilirsin
    WHERE json->'$.status' IN(success) ...
    o json altında sunlar yazıyor ; " {"siparis_id":"xxxxx==","tutar":"3.00","islem_s onu cu":"2","islem_mesaji":"u00d6deme iu015flemi bau015faru0131 ile onaylandu0131.","hash":"xxxx","pay_label":"Bank Transfer","installment_count":"1","subscriberId":" "} " Bunların arasından bulabilir mi yoksa ayrı bir tanımla mamı yapmam lazım ?
  • 17-01-2021, 16:38:09
    #7
    örnekte boşluklar var "islem_s onu cu" bunlara dikkat ettiniz mi
  • 17-01-2021, 18:00:47
    #8
    Json türünde olan verilerin nasıl sorgulanacağı hakkında bir örnek;

    DROP TABLE IF EXISTS `json_siparis_tablosu`;
    CREATE TABLE IF NOT EXISTS `json_siparis_tablosu` ( `data` JSON);
    INSERT INTO `json_siparis_tablosu`  (`data`)VALUES  (' {"tutar":"3.00","islem_sonucu":"2", "status":"success"} ');
    SELECT * FROM json_siparis_tablosu WHERE data->"$.islem_sonucu" = '2' AND  data->"$.status" = 'success'
    Fiddle