Autor | Zpráva | ||
---|---|---|---|
TFSi Profil |
#1 · Zasláno: 19. 6. 2007, 14:52:24 · Upravil/a: TFSi
Zdravím,
mám zhruba takovouhle tabulku: _________________________________ a potřebuji z ní vybrat všechny hodnoty tak, aby se seřadili vzestupně podle datumu, ale zároveň aby se řádky se stejnou skupinou a ještě ke všemu aby se v té skupině rovnaly hodnoty vzestupně podle cisla. Možná že toho chci moc, protože se mi nepodařilo sestavit dotaz, který by pracoval aspoň trošku podobně a ani strejda Gůgl neporadil :( Můj zatím "nejúspěšnější" pokus vypadá takto: SELECT * FROM `skupiny` ORDER BY `skupina` ASC, `date` ASC, `cislo` ASC ale jediné, co to provede je seřazení podle týmu, zbytek je rozházenej :| Předem díky za jakoukoliv radu |
||
Mastodont Profil |
#2 · Zasláno: 19. 6. 2007, 15:22:33
Byblo by dobrý, kdybys sladil ty české a anglické názvy sloupců. team = skupina?
|
||
TFSi Profil |
#3 · Zasláno: 19. 6. 2007, 15:47:25
Mastodont
jo, promiň, v té tabulce je těch sloupců víc (vypsal jsem jenom ty nejdůležitější) a jaksi jsem to zapomněl přepsat. Opraveno. |
||
Mastodont Profil |
#4 · Zasláno: 19. 6. 2007, 16:07:49 · Upravil/a: Mastodont
TFSi
Pokud chceš řadit podle více sloupců, tak je třeba si uvědomit, že ty další sloupce (druhý, třetí) se uplatní jen v případě, kdy se hodnoty v předchozím sloupci opakují. Takže SELECT * FROM `skupiny` ORDER BY `skupina` ASC, `date` ASC, `cislo` ASC ti řádky seřadí nejdřív podle skupiny, v rámci jedné skupiny vzestupně podle kalendářního data ... a pokud tam bude víc řádků pro stejnou skupinu a datum, tak ty pak budou řazeny vzestupně podle čísla. Jinak to nejde :-) |
||
TFSi Profil |
#5 · Zasláno: 19. 6. 2007, 16:13:02
Aha ... tak to jsem v háji :( Ale stejně dík :)
|
||
Kajman_ Profil * |
#6 · Zasláno: 19. 6. 2007, 16:25:47
Nešel by napsat příklad dat a chtěný výsledek seřazení?
|
||
TFSi Profil |
#7 · Zasláno: 19. 6. 2007, 20:53:16
Kajman_
Dobrá. Tabulku můžeš vytvořit pomocí tohodle: CREATE TABLE `skupiny` ( Data se mi nepodařilo z databáze získat (nechápu proč) jinak než jako CSV soubor, takže: http://manual.wz.cz/download/skupiny.csv Výsledek by se měl potom vracet v pořadí jako tabulka http://manual.wz.cz//download/serazeni.png (pro větší přehlednost jsem oddělil jednotlivé skupiny) No a pokusil bych se to pro jistotu ještě jednou vysvětlit, protože se mi to posledně asi moc nepovadlo: Nejprve se mi vrátí všechny řádky skupiny, která je v databázi uvedena podle data jako první a seřazené vzestupně podle sloupce cislo. Až vrátí všechny řádky jedné skupiny, začne vracet všechny záznamy druhé skupiny ... atd atd až nakonec. Btw, sloupec "date" obsahuje unixový timestamp data vložení. |
||
Kajman_ Profil * |
#8 · Zasláno: 19. 6. 2007, 21:13:58
select s.* from skupiny s, (select skupina, max(`date`) posledni from skupiny group by skupina) tmp where s.skupina=tmp.skupina order by tmp.posledni desc, s.skupina, s.cislo
|
||
TFSi Profil |
#9 · Zasláno: 19. 6. 2007, 21:37:07
Kajman_
Mnohokráte díky, opravdu to funguje :) Jediné co nechápu, tak jak to funguje, ale radši to nechám na pokoji, jsem rád, že to konečně jde tak, jak má :) Ještě jednou dík |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0