anlamadığım şey şu count yaparken işlem görmezken sum u nasıl kabul etti ?
Siz sorgunuzu nasıl yazdınız bilmiyorum ama burada count yaparsanız istediğiniz sonucu alamazsınız bir çok subquery yani alt sorgu yazmanız gerekir.
Count size satır sayısını döndürür. Örneğin
SELECT COUNT('begeniler.tip') as dislike WHERE begeniler.tip = 0 bu sorgu size dislike sayısını verecek ama like için aynısını yeniden yazmanız gerekecek bunları joinle birleştirecek falan feşmekan.. Bu iş olmuyor böyle.
Sum ile yaptığımız işlem,
SUM(CASE WHEN begeniler.tip = "0" THEN 1 ELSE 0 END) as dislike
burada aslında sayıyoruz ama manuel sayıyoruz. Yani diyoruz ki beğenilerin tipi 0 ise bu kolonun değerini 1 olarak gör ve tüm satırlarda bu şekilde olanları topla.
Diğerinde de beğenilerin tipi 1 ise bu kolonu 1 olarak gör tüm satırlarda bu şekilde olanları topla. Sonucu bu şekilde elde ediyoruz.
SUM(CASE WHEN begeniler.tip = "0" THEN 1 ELSE 0 END) as dislike
kırmızıya boyadığım 0 sizi aldatmasın. Orada siz mesela varchar kullanmış olsaydınız ve tip = 0 yerine tip = dislike demiş olsaydınız sorguyu şöyle yapabilirdiniz.
SUM(CASE WHEN begeniler.tip = "dislike" THEN 1 ELSE 0 END) as dislike
böylece siz tip'i dislike olan hücrelerin değerini 1 olarak algıla ve sonra bu hücreleri topla demiş olacaktınız. Mantık bu.
İyi forumlar.