CodeWriteson Bir alanı SELECT içine yazdığınızda ve GROUP BY kullandığınızda ya o alana SUM, COUNT, MIN, MAX, AVG vs. gibi bir aggregate yöntemi uygulayıp tek bir sonuca indireceksiniz ya da GROUP BY içerisinde kullanıp grup anahtarı olarak kullanacaksınız. Sizin yaptığınız hata tek bir sütuna birden değer karşılık geliyor, aggregate yapmamışsınız ama group by'a da eklememişsiniz. Ya tek satır sonuç olacak, sütun aggregate ile sıkıştırılmış olacak ya da group by'a ekleyeceksiniz, group sayısı kadar satır oluşacak. Mesela şöyle bir sonuç alıyorsunuz:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 1 | | | \
| 1 | 2 | 3 | > Burası tek bir satır
| 3 | | | /
+--------+--------+--------+
Tabi alamıyorsunuz hata veriyor çünkü gördüğünüz gibi bir satır sonuç dönmüş ama field1 alanına 3 değer gelmeye çalışıyor. Yani field1 alanına ne aggregate uygulamışsınız ne de group by içine almışsınız. Eğer aggregate uygularsanız, mesela SUM, çalışan sorgu şu sonucu verir:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 5 | 2 | 3 |
+--------+--------+--------+
yada concat uyguladınız:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 1,1,3 | 2 | 3 |
+--------+--------+--------+
Eğer GROUP BY içine field1 dahil ederseniz ve field2 ve field3'ün de aggregate olduğunu varsayarsak da şunu almanız lazım:
+--------+--------+--------+
| field1 | field2 | field3 |
+--------+--------+--------+
| 1 | 1 | 2 |
| 3 | 1 | 1 |
+--------+--------+--------+
* Grup sayısı kadar satır oluştu
Yani grup yaparken seçtiğiniz alanların her sütuna bir değer gelecek şekilde dağıtılmasını sağlamanız lazım. Ya hepsi bür sütunda kümeleşecek ya da group sayısı kadar satır oluşacak.