![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 29.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
Możecie mi wyjaśnić, czym jest grupowanie (GROUP BY)? Z tego co zdążyłam zrozumiec, to jest to jakieś uproszczone sortowanie, polegające na tym, że wartości nie są porządkowane od najmniejszej do największej lub na odwrót, lecz jedynie "składane" "obok siebie" te, które są identyczne. Dobrze zrozumiałam? Mam jeszcze wątpliwości co do tego, kiedy grupowanie się odbywa. Wiem, że sortowanie odbywa się po całej tabeli i dopiero potem zwracana jest ustalona liczba rekordów (LIMIT). Nie wiem jednak, jak to jest z grupowaniem, ale wydaje mi się, że najpierw zostaje "wyciągnięta" żądana liczba rekordów, a dopiero później zostają one pogrupowane. Czy mam rację?
-- W trupa obrócę każdego, kto na mej drodze stanie. Torcha PS: Ja dopiero zaczynam poznawać mowę, którą posługują się bazy danych. PS2: Dlaczego nie można pisać jako Gość? To absurd, że musiałam się zarejestrować tylko po to, by zadać dwa pytania. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
Mozesz przyjac ze klauzule sa wykonywane w kolejnosci zapisu. Czyli najpierw rekordy zostana zgrupowane w pojedyncze wiersze wedlug warunku po GROUP BY a potem tak otrzymany wynik zostanie pociety wedlug wartosci po LIMIT.
W obrebie grupy kolejnosc nie ma znaczenia i jest nieokreslona. Wedlug standartu mozesz odwolywac sie tylko funkcjami agregujacymi (czyli SUM(), AVG(), MIN() etc.) do wartosci z grupowanych wierszy, a one zawsze biora pod uwage wszystkie wartosci w danej grupie. Czyli zapis [sql:1:be520a6083] SELECT wiek, numer_buta, sum(zarobek) FROM pracownicy GROUP BY wiek; [/sql:1:be520a6083] jest nielegalny - wiek mozesz pobrac (bo w obrebie grupy jest staly wiec nie tu niejednoznacznosci, jednakze pracownicy o tym samym wieku moga miec rozne rozmiary buta, i o numer ktorego moze chodzic ? Jednakze MySQL to w pewnym sensie umozliwia - w nim ten zapis jest prawidlowy, ale numer_buta dostaniesz ktoregos, przypadkowego pracownika - baza nieokresla ktory wiersz z grupy zostanie wykorzystany do tego. Jest to przydatne jak skad inad wiesz ze ta wartosc i tak jest stala bo cos tam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 05:24 |