Group by dziwnie działa

0

Mam pewien problem, wynika on pewnie z tego, że nie do końca rozumiem jak działa group by choć czasami je stosuję (działam na MySQLu).

Gdy odpalam zapytanie:

SELECT strumien_aktywnosci.id_obce,
           aktorzy.imie,
           aktorzy.plik 
           FROM strumien_aktywnosci 
	   INNER JOIN aktorzy ON strumien_aktywnosci.id_obce=aktorzy.id_aktora
           GROUP BY strumien_aktywnosci.id_obce
	   ORDER BY strumien_aktywnosci.data_dodania DESC LIMIT 100

To wyświetla mi wynik:
1696 Ginger Lynn 1696.jpg
1696 Ginger Lynn 1696.jpg
1696 Ginger Lynn 1696.jpg
1696 Ginger Lynn 1696.jpg
2291 Abella Anderson 2291.jpg
2291 Abella Anderson 2291.jpg
185 Gina Lynn 185.jpg
185 Gina Lynn 185.jpg
185 Gina Lynn 185.jpg
2291 Abella Anderson 2291.jpg
115 Ashley Nicole 115.jpg
1840 Bobbi Starr 1840.jpg
1840 Bobbi Starr 1840.jpg
387 Melissa Lauren 387.jpg
1073 Stoya 1073.jpg
901 Alexis Texas 901.jpg
1428 Andy San Dimas 1428.jpg
673 Bree Olson 673.jpg
1278 Alektra Blue 1278.jpg
106 Belladonna 106.jpg
1289 Maria Ozawa 1289.jpg
1732 Juelz Ventura 1732.jpg
927 Mandy Morbid 927.jpg
2290 Sibel Kekilli 2290.jpg
...

Jak odpalam ten sam kod z dodanym group by:

 SELECT strumien_aktywnosci.id_obce,
           aktorzy.imie,
           aktorzy.plik 
           FROM strumien_aktywnosci 
	   INNER JOIN aktorzy ON strumien_aktywnosci.id_obce=aktorzy.id_aktora
group by aktorzy.id_aktora
	   ORDER BY strumien_aktywnosci.data_dodania DESC LIMIT 100

To wyświetla:

1696 Ginger Lynn 1696.jpg
2291 Abella Anderson 2291.jpg
1732 Juelz Ventura 1732.jpg
2290 Sibel Kekilli 2290.jpg
2289 Teri Weigel (Teresa Susan Weig 2289.jpg
2288 Jada Stevens 2288.jpg
...

Jak widać pierwsze nazwisko się zgadza, drugie też, ale już przy trzecim zamiast Gina Lynn jest Juelz Ventura. Juelz Ventura w 1 liście jest o wiele dalej, a Giny Lynn w drugiej liście nie ma wcale :/

0

To jest chyba najbardziej porąbany pomysł: ucz się baz danych za pomocą MySQL.
Oba zapytania są niepoprawne.
Generalnie w zapytaniu agregującym mogą występować dwa rodzaje składników: pola grupujące i agregaty. (z drobnymi wyjątkami)
Czyli np:

SELECT strumien_aktywnosci.id_obce,
           aktorzy.imie,
           aktorzy.plik, count(*) ilosc
           FROM strumien_aktywnosci 
           INNER JOIN aktorzy ON strumien_aktywnosci.id_obce=aktorzy.id_aktora
           GROUP BY strumien_aktywnosci.id_obce, aktorzy.imie, aktorzy.plik
           LIMIT 100

[edit] Wywaliłem ORDER BY, bo tego pola nie ma w zapytaniu
pozdrawiaMM

0

To jest chyba najbardziej porąbany pomysł: ucz się baz danych za pomocą MySQL.

Znów noobowski flame. Kiedy to się skończy?

0

Widzę że nikt nadal nie wyjaśnił w czym problem:
Jeśli grupujesz dane po jakimś polu to wszystkie dane które chcesz wybrać z bazy muszą być agregatami albo tym po czym grupujesz. Tzn nie wolno ci zrobić (o ile imie nie jest kluczem ;) )

select imie, rok_urodzenia from osoby
group by imie

Czemu? Ano temu że osób o danym imieniu możesz mieć dużo i wtedy którą datę urodzenia miałoby ci tutaj wypisać? Ale wolno ci zrobić:

select imie, avg(wiek) from osoby
group by imie

Czemu tak wolno? Bo nie wynikiem liczenia średniej dla osób o danym imieniu jest jeden wynik i wiadomo co baza powinna wyświetlić - imię i średni wiek osób z danym imieniem

0

buahaha!!!
Ginger Lynn - "amerykańska aktorka filmowa występująca głównie w filmach porno".
Abella Anderson
Gina Lynn - "aktorka porno i zawodowa striptizerka (...) Lynn doznała ciężkich obrażeń twarzy i karku, natomiast członek ekipy Off The Hook TV ciężko uszkodził swoje genitalia w wyniku nieudanego występu o nazwie "150ft Rubber Band Stun"" - zawód pełen niebezpieczeństw.
Bobbi Starr - "is an American pornographic actress (...) [who] wants to study pre-med, with the aim of becoming a gynecologist".
Melissa Lauren - "rozpoczęła swoją karierę w branży porno w wieku 18 lat (...) przyznaje się, że wpływa na nią buddyzm".
Stoya - "pornographic actress and model. (...) "my dad taught me how to navigate DOS", she has said".
Alexis Texas - "pośladki nr 1 branży filmów dla dorosłych"
Sibel Kekilli - "popularność zyskała dzięki występom w niemieckich produkcjach pornograficznych"
Maria Ozawa - "former Japanese adult video (AV) actress. (...) played hockey every day, and often went to karaoke after class.(...) at the age of 13 (...) learned the "48 sexual positions" from a book she bought herself".

i tak dalej, i tak dalej... ciekawy dobór aktorek. jak dla mnie wątek-perełka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1