Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwa pytania o GROUP BY
Torcha
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
uboottd
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 05:24