Dlaczego te podzapytanie bez group by nie zadziała? Chcę wydobyć z tabeli nazwiska i sumę ich zarobków:
SELECT nazwisko, sum(pensja + premia) AS Zarobki
FROM pracownik
GROUP BY nazwisko
Dlaczego te podzapytanie bez group by nie zadziała? Chcę wydobyć z tabeli nazwiska i sumę ich zarobków:
SELECT nazwisko, sum(pensja + premia) AS Zarobki
FROM pracownik
GROUP BY nazwisko
to jest pytanie w stylu dlaczego 2+2=4
- tak jest to zrobione i koniec. Jeśli masz użytą funkcję agregującą w zapytaniu to wszystkie pola nie użyte w funkcjach agregujących muszą być wymienione po GROUP BY
(nie dotyczy mysql. BTW większość rzeczy nie dotyczy mysql...)
Ale dlaczego tak musi być? Bo np. w mysql mówisz że nie trzeba grupować.
Silnik musi "wiedzieć" po czym sumuje. To zadziała bez group by jak będziesz miał tylko funcje agregujące w selectcie. Oczywiście można się spierać że group by jest niepotrzebny, ale silnik bazy nie ma myśleć za operatora tylko dostać jednoznaczne instrukcje...
Świetny Młot napisał(a):
Ale dlaczego tak musi być?
Bo ktoś tak sobie to wymyślił. To się nazywa standard. Tak samo jak np. ktoś sobie wymyślił, że w c++ porównanie to ==
a nie np (=)
Bo np. w mysql mówisz że nie trzeba grupować.
bo mysql to nie baza danych tylko jakaś popierdółka, która ze standardem ma niewiele wspólnego
@szweszwe
Standard wymaga aby były i większość baz się tego trzyma. BTW proszę nie podawać dokumentacji mysqla bo on NIE TRZYMA STANDARDU! Jak już to http://dev.cs.uni-magdeburg.de/db/sybase9/help/dbugen9/00000284.htm
Na świecie jest wiele innych baz poza mysqlem