Starší komentáře ke článku: Třídění podle různých sloupců pomocí CASE v MS SQL

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Petr Bříza

Datum vložení: 1.4.2005 12:17:38

Já bych vyšel z posledního příkladu, a napsal bych to takto: ORDER BY CASE WHEN @sestupne = 1 THEN CASE WHEN @sloupec = 1 THEN sloupec1 WHEN @sloupec = 2 THEN sloupec2 END DESC, CASE WHEN @sestupne = 0 THEN CASE WHEN @sloupec = 1 THEN sloupec1 WHEN @sloupec = 2 THEN sloupec2 END ASC Ještě mě tak napadá, že je možné, že se pro řazení někdy používají indexy (např. při TOP, ale jistý si tím nejsem), pak by asi bylo lepší do procedury napsat rovnou ty dotazy odděleně, abychom použití indexů nebránili: IF @sloupec = 1 AND @sestupne = 1 SELECT ... ORDER BY @sloupec1 DESC IF @sloupec = 1 AND @sestupne = 0 SELECT ... ORDER BY @sloupec1 ASC atd.

Avatar

Autor komentáře: Honza Votava

Datum vložení: 4.4.2005 17:24:38

Přesně tak... Tato konstrukce neumožní sql optimizeru vzít v úvahu jakýkoliv index pro třídění, navíc se generuje další krok v prováděcím plánu na vyhodnocení toho case (compute scalar). Takže tento postup je vhodný jen, pokud očekáváte, že výsledný dataset bude rozumně malý.

Avatar

Autor komentáře: Volt

Datum vložení: 4.4.2005 16:32:29

Nejsem expert na MS SQL ale v Oracle jde pouzit primo ORDER BY 3,5 coz znamena setrid podle sloupce 3 nasledne 5 atd.

Avatar

Autor komentáře: Honza Votava

Datum vložení: 4.4.2005 17:26:14

MS SQL nabízí totéž, ale IMHO bych tento postup nedoporučil. Sice si ušetříte trochu psaní, ale ve chvíli, kdy přidáváte nebo ubíráte nějaký sloupec v selectu si ušetříte hodně zmatečných chyb z nepozornosti

Avatar

Autor komentáře: volt

Datum vložení: 14.4.2005 22:28:57

Samozrejme ze prime pouzivani cisel je vcelku barbarske ale to lze zjednodusit treba tak ze cisla sloupcu zadefinuji jako konstanty, ktere nasledne pouzivam obdobne jako jmena sloupcu.

Avatar

Autor komentáře: Tomáš Tintěra

Datum vložení: 5.4.2005 9:30:51

Řadí se např. podle abecedy, třídí se do několika skupin. (Například odpad na papír, plasty a na ten zbytek). Je to jedna z věcí, kvůli které vzdělaní lidé považují počítačníky za pologramoty. Tak to prosím pište česky nebo mi tento názor vyvraťte.

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 5.4.2005 22:48:46

Váš názor je přirozený a přirozeně zcestný. Protiargument existuje již léta, je součástí elementárních základů statistiky a byl probírán i zde na Intervalu. Řadí se totiž vždy podle nějaké obecné, předem dohodnuté posloupnosti kategorií, zatímco třídit lze do jakýchkoli kategorií. Z tohto pohledu je řazení konkretizovanou metodou třídění, řazení je podmnožinou třídění...

Avatar

Autor komentáře: Tomáš Tintěra

Datum vložení: 6.4.2005 16:11:11

Díky za odpověď, ale st8le jste mě nepřesvědčil. Byl by link na ten článek nebo název toho článku?

Avatar

Autor komentáře: Radim Hampel

Datum vložení: 8.4.2005 9:32:43

Přidám spíše podpůrný armument. Ve škole v tělocviku jsme se řadili do řady nebo třídili? Jediný správný český výraz pro tuto situaci je řazení. Radim Hampel

Avatar

Autor komentáře: Honza Votava

Datum vložení: 27.4.2005 17:26:51

encyklopedie universum uvádí mj. tento význam slovesa třídění: [i] třídění, 3. informatika inform. sestavení vět datového souboru podle nějakého řádu, např. podle abecedy;[/i] Takže (alespoň podle naučného slovníku) v kontextu článku je výraz užitý správně. IMHO je nejdůležitější, když si rozumíme. Co jsou třídící algoritmy si dovedu jasně představit, ale co je to řadící algoritmus? To sousloví se rozhodně nepoužívá pro algoritmy, které souvisí s pořadím dat. Honza Votava

Avatar

Autor komentáře: Ing. Vlastimil Pospíchal

Datum vložení: 27.6.2005 8:04:08

Encyklopedie universum zřejmě obsahuje víc chyb, včetně této. Co je to třídící algoritmus? To je algoritmus, který třídí data do různých kategorií a není přitom řečeno, jaké pořadí bude mít v jednotlivých kategoriích. Řadící algoritmus vytváří v datech pořadí a pro algoritmy, které souvisí s pořadím dat, se rozhodně používá. Už jste někdy slyšeli pojem "Třídění metodou třídění"? Že to zní blbě? Správně je totiž "Řazení metodou třídění".

Avatar

Autor komentáře: zsery

Datum vložení: 23.4.2005 23:20:35

Jen pro informaci - nemělo by se to spíše jmenovat Třídění podle předem specifikovaných sloupců pomocí CASE v MS SQL nebo tak nějak? Není adekvátním a možná lepším řešením napsání více procedur či funkcí pokud je to natvrdo v kódu? zsery

Avatar

Autor komentáře: miker

Datum vložení: 25.4.2005 14:02:53

zdravim, mam problemik s vyhladavanim v db cez stlpec, ktory v sebe obsahuje diakritiku. vsetko bezi ok, az na pismena Č, Ď a Ň... pri vyhladavani cez Č mi vracia riadky, ktore zacianaju na Č, ale aj na E... detto vyhladavanie cez Ď, kde mi vrati aj riadky s pismenami I a Ň s pismenami O...a obratene, teda pri vyhladavani E mi vrati aj Č...atd tabulka je typu MyIsam... ako mozno vyriesit tento problem? vdaka

Zpět na článek | Úvodní stránka Interval.cz