• 04-11-2012, 16:30:42
    #1
    merhaba,
    istatistik verileri için 3 tabloyu birleştirerek kayıtları saydırıyorum. tablomda durum stununa göre 'Başarılı' veya 'Başarısız' olarak süzerek toplam sayıları alıyorum.
    2 farklı sorgu yaparak (biri başarılı durumu için diğeri de başarısız durumu için) sağlıklı sonuç alabiliyorum. Fakat arayüze aktarırken sorun yaşıyorum. 2 durumu da tek sorguda almam gerekiyor.

    Tablolar
    satis -> id, personel_id, durum, sil, bitis_tarihi, vs...
    personel -> id, personel_grup_id, vs...
    personel_grup -> id, grup_adi
    Personel gruplarına göre başarılı ve başarısız satış sayılarını almaya çalışıyorum

    kullandığım sorgu
    SELECT Count(s.id) AS toplam, s.id, g.grup_adi
    			FROM satis AS s 
    			INNER JOIN personel AS p
    			ON p.id = s.personel_id
    			INNER JOIN personel_grup AS g
    			ON g.id = p.personel_grup_id
    			WHERE DATE(s.bitis_tarihi) BETWEEN '$baslangic_tarihi' AND '$bitis_tarihi' AND  s.durum = 'Başarılı' AND s.sil = '0' $gruplar
    			GROUP BY p.personel_grup_id
    Aldığım sonuç
    toplam| grup_adi |
    5 | pendik |
    4 | kartal |

    Bu sorgu ile sadece tek durumdaki toplamı alabiliyorum.
    UNION ALL ile yapmaya çalıştım o olmuyor. IF, CASE denemek istedim onları da daha önce kullanmadığımdam sorguyu çalıştıramadım bile.


    Nasıl bir sorgu yaparsam tek seferde Başarılı ve Başarısız toplamları alabilirim?
    MYSQL'de şöyle bir şey var mı acaba?(dönecek değeri koşula bağlı olarak belirlenen stuna yazmak gibi birşey)
    if(durum == Başarılı){
      Count(id) AS basarili
    }else{
      Count(id) AS basarisiz
    }
    Almak istediğim çıktı:
    basarili | basarisiz | grup_adi
    5 | 4 | pendik
    4 | 7 | kartal

    İstediğimi ifade edebildim mi bilemiyorum, olabildiğince açık örnekli sormaya çalıştım
  • 10-11-2012, 17:11:52
    #2
    Önce with ile 2 ayrı table oluşturup, onları ayrı ayrı saydırabilirsin. Sonra oradan istediğini elde edebilirsin sanırsam.
  • 10-11-2012, 17:13:04
    #3
    mümkün müdür ben de merak ediyorum.