• 24-05-2022, 12:44:07
    #1
    Selam arkadaşlar.
    Bir tablom var.
    Tablo Satırı şu şekilde:
    Onaylayici 1 - Onaylayici 2 - Onaylayici3 - Onaylayici4 - Onaylayici 5

    Yapmak istediğim şu. id y e göre ilgili satırdaki dolu olan sütun sayısını almak.

    Örnek olması için




    Burada
    5 tane sütun var.
    1 satır var ve bu satırda sütunlara göre 4 tane kayıt var.
    Şimdi direk olarak sütun sayısını alabiliyorum.

    Kodum.
    $sql = $db->qSql("SELECT * FROM tablom WHERE id='1' ");
    $count = $sql->columnCount();
    echo $count;
    Ben boş olan veya 0 olan içerikleri saymak istemiyorum. bunu nasıl yapabilirm.
  • 24-05-2022, 12:49:08
    #2
    emrezsy adlı üyeden alıntı: mesajı görüntüle
    Selam arkadaşlar.
    Bir tablom var.
    Tablo Satırı şu şekilde:
    Onaylayici 1 - Onaylayici 2 - Onaylayici3 - Onaylayici4 - Onaylayici 5

    Yapmak istediğim şu. id y e göre ilgili satırdaki dolu olan sütun sayısını almak.

    Örnek olması için




    Burada
    5 tane sütun var.
    1 satır var ve bu satırda sütunlara göre 4 tane kayıt var.
    Şimdi direk olarak sütun sayısını alabiliyorum.

    Kodum.
    $sql = $db->qSql("SELECT * FROM tablom WHERE id='1' ");
    $count = $sql->columnCount();
    echo $count;
    Ben boş olan veya 0 olan içerikleri saymak istemiyorum. bunu nasıl yapabilirm.
    Sanırım şöyle bir şey var,
    SELECT * FROM table WHERE some_col IS NULL OR some_col = ''; yani sorguda column durumuna göre getirebilirsin. Gelen veriyi direk sorguda filterelediğin için yine columncount icine dolu olanlar gelir. ikinci bir durum olarak Onaylayıcıları ayrı bir tabloda tutup, kimin hangi durum için onayladığını 2-3 sütunda tutarak normalizasyon ile çözebilirsin
  • 24-05-2022, 13:17:13
    #3
    gurbuzemre adlı üyeden alıntı: mesajı görüntüle
    Sanırım şöyle bir şey var,
    SELECT * FROM table WHERE some_col IS NULL OR some_col = ''; yani sorguda column durumuna göre getirebilirsin. Gelen veriyi direk sorguda filterelediğin için yine columncount icine dolu olanlar gelir. ikinci bir durum olarak Onaylayıcıları ayrı bir tabloda tutup, kimin hangi durum için onayladığını 2-3 sütunda tutarak normalizasyon ile çözebilirsin
    Farklı bir tablo ile şuan için yapmam mümkün görünmüyor.
    Önerdiğin yolu denedim. Sonuç maalesef başarısız.
  • 24-05-2022, 13:21:50
    #4
    SELECT * FROM tablom
    WHERE id='1' AND
    ONAYLAYICI 1 > 0 OR
    ONAYLAYICI 2 > 0 OR
    ONAYLAYICI 3 > 0 OR
    ONAYLAYICI 4 > 0 OR
    ONAYLAYICI 5 > 0
  • 24-05-2022, 13:26:53
    #5
    mkozdogan adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM tablom
    WHERE id='1' AND
    ONAYLAYICI 1 > 0 OR
    ONAYLAYICI 2 > 0 OR
    ONAYLAYICI 3 > 0 OR
    ONAYLAYICI 4 > 0 OR
    ONAYLAYICI 5 > 0
    Bunu denedim. OR kullanıldığı için eşleşmelerden herhangi birini yakalasın hepsini sayıyor. Yani normalde sonucun 4 çıkması gerekirken 5 çıkartıyor. AND kullandığımda ise şartlardan biri sağlanmasın sonuç 0
  • 24-05-2022, 13:39:00
    #6
    Bir de şunu deneyebilir misiniz o zaman? Böyle daha mantıklı.

    SELECT
            COUNT(CASE WHEN [ONAYLAYICI 1]  IS NOT NULL AND [ONAYLAYICI 1]  != '' THEN 1 END)  +
            COUNT(CASE WHEN [ONAYLAYICI 2]  IS NOT NULL AND [ONAYLAYICI 2]  != '' THEN 1 END)  +
            COUNT(CASE WHEN [ONAYLAYICI 3]  IS NOT NULL AND [ONAYLAYICI 3]  != '' THEN 1 END)  +
            COUNT(CASE WHEN [ONAYLAYICI 4]  IS NOT NULL AND [ONAYLAYICI 4]  != '' THEN 1 END)  +
            COUNT(CASE WHEN [ONAYLAYICI 5]  IS NOT NULL AND [ONAYLAYICI 5]  != '' THEN 1 END)  
    FROM TABLOM
    Böylece count'un sonucu kaç tanesinin içi dolu ise o kadar +1 olacaktır.