Autor Zpráva
TFSi
Profil
Zdravím,
mám zhruba takovouhle tabulku:
_________________________________

| skupina | cislo | text | datum |
---------------------------------
| - - hodnoty - - |


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
Byblo by dobrý, kdybys sladil ty české a anglické názvy sloupců. team = skupina?
TFSi
Profil
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
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
Aha ... tak to jsem v háji :( Ale stejně dík :)
Kajman_
Profil *
Nešel by napsat příklad dat a chtěný výsledek seřazení?
TFSi
Profil
Kajman_
Dobrá. Tabulku můžeš vytvořit pomocí tohodle:
CREATE TABLE  `skupiny` (

`id` int(10) unsigned NOT NULL auto_increment,
`skupina` varchar(45) NOT NULL default '',
`text` varchar(255) NOT NULL default '',
`cislo` tinyint(3) unsigned NOT NULL default '0',
`date` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2;

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 *
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
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
Toto téma je uzamčeno. Odpověď nelze zaslat.

0