Birden Fazla Tablodaki Count(*) Değerinin Toplamına Ulaşmak – UNION vs UNION ALL
Geçen gün projelerin birinde bu tip bir sorguya ihtiyacım olmuştu. Sql’de çok tecrübeli olmadığımdan olaya temkinli yaklaşıp aşağıdaki sorguyu yazmıştım:
SELECT SUM(val) FROM ( SELECT COUNT(*) AS val FROM Tablo1 UNION SELECT COUNT(*) AS val FROM Tablo2 )
Sorguyu çalıştırıp yanlış değer döndüğünü farkedince olayın UNION kullanmamdan kaynakladığını öğrendim. Temkinli olmak yetmemiş, bilgiye ihtiyacım varmış. Zira UNION farklı değerlerle ilgilenip , tablolardaki aynı değerleri yeni oluşan tabloya dahil etmiyor. Kısaca Sqldeki DISTINCT gibi çalışıyor diyebiliriz. Sorguyu aşağıdaki şekliyle çalıştırınca istediğim sonucu yani iki tablodaki row sayılarının toplamına ulaşmış oldum. Elbette projedeki select sorguları böyle değildi, ancak olayı anlaşılır kılmak adına böylesi daha uygun olur diye düşündüm.
SELECT SUM(val) FROM ( SELECT COUNT(*) AS val FROM Tablo1 UNION ALL SELECT COUNT(*) AS val FROM Tablo2 )
Şüphesiz bu sonucu sqlde birden fazla yöntemle elde edebiliriz. Sizin de bir çözümünüz varsa paylaşabilirsiniz.
