Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Sortowanie po GROUP BY
Forum PHP.pl > Forum > Przedszkole
-asa-
jak posortować wyniki malejąco wg. GROUP BY ?

czyli mam rekordy:

Kod
pies
pies
kot
pies
krowa
pies
kot
kot
krowa



i chce je mieć w takiej kolejności:

krowa (bo występuje najmniej x)
kot
pies (bo występuje najwięcej)
phpion
Poczytaj o COUNT i użyj go do wyświetlenia ilości wystąpień danego wyraz oraz do sortowania.
Ociu
  1. SELECT DISTINCT nazwa FROM zwierzeta GROUP BY nazwa ORDER BY cos ASC
?
phpion
@Ociu: chyba nie bardzo smile.gif

Skoro szalejemy z gotowcami to:
  1. SELECT nazwa_zwierzecia, COUNT(*) FROM zwierzeta GROUP BY nazwa_zwierzecia ORDER BY COUNT(*) ASC

Powinno śmigać.
Ociu
Masz rację.
-asa-
phpion - działa smile.gif dzięki. sam doszedłem - a tu widze już jest gotowiec smile.gif

ale ...

sprawa sie komplikuje.

mamy tabele:

ssaki| gady | ryby |
i rekordy

kot|zmija|flądra
pies|zmija|śledź
kot|krokodyl|makrela
pies|krokodyl|flądra

i teraz czy da się w jednym zapytaniu wybrać i posortować je w zależności od ilości wystapien (tak jak w poprzednim przykladzie)

by otrzymac listę posortowaną - i znacznik do jakiej grupy zwierzat nalezy ?

P.S.
bo robie chmurke tagow smile.gif
-asa-
dane przykladowe trosze zle dobralem bo wieksozsc sie powtarza 2x ...

poprawiajac

kot|zmija|flądra
kot|krokodyl|śledź
kot|krokodyl|makrela
pies|krokodyl|makrela
pies|krokodyl|makrela


i chcial bym otrzymac:

krokodyl - gad(4x)
kot - ssak(3x)
...
pies ssak (1x)
Gość
Da sie ale wiecej z tym zamoty niz to warte.

Sugeruje normalizacje tablicy w nast sposob.

ssaki|gady|ryby => |zwierzeta|rodzaj(varchar)|
lub w osobnej tabeli rodzaje zwierzat i w kolumnie zwietrzeta kolumna zid laczaca sie z rodzajami zwierzat ale na twoje potrzeby wystarczy chyba |zwierzeta|rodzaj|

wtedy mozesz latwo groupowac po kolumnach uzywajac group by ()
calebos
Sry nie bylem zalogowany.

Mowiac 'Da sie ale wiecej z tym zamoty niz to warte." mialem na mysli oczywiscie przy obecnej konstrukcji bazy.
-asa-
tylko nie moge zmienić układu tabeli ...
-asa-
bo to jest tak że mam news. Do każdego newsa dodaje 6 tagów.

id|id_newsa|tag1|tag2|...|tag6

i teraz chce je zliczyc, i w zależności od tego na którym miejscu dany tag jest przypisać mu mnożnik - np. dla tag1: 2.0 a dla tag6 0.25. Pomnożyć ilosć wystapien przez ten mnoznik i wyswietlic w chmurce tagów.
calebos
Zostaje ci przechwycenie nazw kolum i danych do tablic php i petlowanie przez to.
Generalnie nazwa kolumny nie sluzy do przechowywania danych w bazie danych tylko wiersze...
SQL'em nic nie przychodzi mi do glowy aby grupowac dane z kolumny+nazwy kolumn.

distinct i group by nie pomoga w identyfikacji typu dla danych.
Zrob druga tablice i tam sobie to postaw tak jak napisalem.
Bardzo prosto mozna to przerobic samymi zapytaniami sql.
INSERT INTO NOWA BAZA (dane,zwierzotyp)VALUES (SELECT DISTINCT ssaki,(zwierzotyp) FROM ZLATABLICA )

EDIT napisz ty spokojnie calosc co to ma robic a nie tylko wyrywki i struktury..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.