Dnes: 21. ledna 2018    | Registrace | Hledáme | Redakce | Info | Testy | Školení | Ocenění | Nápověda | Čtenář: nepřihlášen

Rychlé odkazy
  • Hlavní stránka
  • Seznam rubrik
  • Ankety
  • Editoriály
  • TOP 15
  • KONFERENCE 2008
  • KONFERENCE 2007
  • KONFERENCE 2006
  • KONFERENCE 2005
  • KONFERENCE 2004
  • Sborník
  • Testy
  • Virtuální školení
  • Personalizace


  • Hledáte práci?
    Hledáme redaktora - pojďte s námi tvořit Databázový svět!

    Vyhledávání

    Hledej
    na Databázovém světě!



    Rozšířené vyhledávání

    Rubriky
    Aktuality
    Bezpečnost
    Business
    Česká scéna
    Datové sklady
    Dokumentace
    Dotazovací jazyky
    Hardware
    Historie
    Komentáře
    Literatura
    Metodologie
    Nondb
    Open Source
    Poradna
    Produkty
    Případové studie
    Redakce
    Rozhovory
    Standardy
    Technologie
    Tipy - triky
    Tiskové zprávy
    Vývoj
    Vývojové nástroje
    Zajímavosti

    Co je to?
    Datový sklad
    Tento pojem poprvé formuloval koncem 80. let William Inmon jako strategii přístupu k datům určeným pro rozsáhlé analýzy. V případě datového skladu hovoříme o historických, časově rozlišených, agregovaných, průběžně rozšiřovaných datech uspořádaných pro podporu potřeb managementu.

    Akce
    Dynamická Datová Centra
    - na semináři se seznámíte s komplexním řešením a koncepcí Dynamických Datových Center od Fujitsu Siemens Computers se speciálním důrazem na řešení FlexFrame.

    Textová inzerce
    IBPhoenix - Vše o InterBase a Firebirdu.

    Smějete se rádi? - Pak je pro vás Vtipník to pravé!

    Prodejce reklamy - Hledáme schopného prodejce reklamního prostoru, možnost i externí spolupráce.

    Přihlášený čtenář
    Nepřihlášený čtenář

    O portálu
    Databázový svět
    ISSN: 1213-5933

    Web je optimalizován pro rozlišení 1024x768, nicméně kromě větších rozlišení podporujeme i 800x600. Podrobnosti najdete zde.

    Chcete-li mít kdykoliv možnost zkontrolovat obsah našeho portálu, můžete využít podporu rss. Podrobnosti najdete zde.
    365 x SQL = praxe, Díl 1. – ASC? DESC?


    [Tipy - triky] - {Mírně pokročilí} Dnešním dnem zahajujeme praktický seriál o jazyku SQL, který se bude skládat z různých tipů a triků rozdílné úrovně – od naprostých začátečníků až po profesionály živící se vývojem databázových aplikací. Dnes se podíváme na kombinované třídění výsledku dotazu.



    Jednotlivé tipy-triky ze seriálu 365 x SQL = praxe jsou vytvářeny tak, aby byly co nejméně závislé na konkrétní databázové platformě. Nepodaří-li se nám toto pravidlo dodržet, uvedeme, pro jakou platformu je daný tip-trik určen.

    Pro třídění výsledků dotazu se běžně používá v SQL klauzule ORDER BY. Možností je ale mnohem více, než jen třídění podle jednoho sloupce tabulky.

    Pomocí následujícího příkazu si založme tabulku dluznici:

    create table dluznici 
      ( prijmeni varchar(25),
        jmeno varchar(25),
        dluzi char(1)
      );
    

    Hodnota sloupce dluzi může být 'A' nebo 'N', podle toho, zda nám daná osoba něco dluží či nikoli.

    Nyní tabulku dluznici naplňme daty:

    insert into dluznici values ('Kocan','Marek','N');
    insert into dluznici values ('Kocan','Martin','A');
    insert into dluznici values ('Kocan','Ivo','A');
    insert into dluznici values ('Skřivánek','Petr','N');
    insert into dluznici values ('Skřivánek','František','A');
    insert into dluznici values ('Málek','Jiří','A');
    

    Prvním úkolem, který nás pravděpodobně napadne je vypsat si všechny osoby z této tabulky tak, aby byly setříděny podle příjmení a jména vzestupně. Nic těžkého, stačí na to jednoduchý dotaz:

    select dluzi, 
           prijmeni,
           jmeno 
      from dluznici 
      order by prijmeni, 
               jmeno;
    

    Výsledkem bude:

    DLUZI  PRIJMENI   JMENO
    =====  ========   =====
    A      Kocan      Ivo
    N      Kocan      Marek
    A      Kocan      Martin
    A      Málek      Jiří
    A      Skřivánek  František
    N      Skřivánek  Petr
    

    Ten sice odpovídá zadání, ale nemusí být pro nás vždy přehledný. Dejme tomu v případě, kdy bychom chtěli mít výsledek setříděný nejprve podle toho, zda nám někdo něco dluží a teprve pak až podle příjmení a jména. Zkusme dotaz:

    select dluzi, 
           prijmeni,
           jmeno 
      from dluznici 
      order by dluzi,
               prijmeni, 
               jmeno;
    

    Výsledkem tohoto dotazu bude:

    DLUZI  PRIJMENI   JMENO
    =====  ========   =====
    A      Kocan      Ivo
    A      Kocan      Martin
    A      Málek      Jiří
    A      Skřivánek  František
    N      Kocan      Marek
    N      Skřivánek  Petr
    

    Stejného výsledku dosáhneme, pokud dotaz rozšíříme o volbu pro vzestupné třídění (ASC[ENDING]), neboť tato volba je pro třídění implicitní:

    select dluzi,
           prijmeni,
           jmeno 
      from dluznici 
      order by dluzi ascending,
               prijmeni asc,
               jmeno asc;
    

    Jak vidíme z příkladu, lze používat plný i zkrácený tvar volby ASCENDING.

    Jakým způsobem ale zadáme dotaz, kdybychom chtěli v první části výsledku mít osoby, které nám nic nedluží a v druhé části osoby, které nám něco dluží (písmeno N je v abecedě až za písmenem A)? Při zachování ostatního třídění. Rada je jednoduchá, stačí použít vedle volby ASCENDING také volbu DES[CENGING] pro sestupné třídění.

    select dluzi, 
           prijmeni,
           jmeno 
      from dluznici 
      order by dluzi descending,
               prijmeni asc,
               jmeno asc;
    

    Výsledek již nyní vypadá lépe:

    DLUZI  PRIJMENI   JMENO
    =====  ========   =====
    N      Kocan      Marek
    N      Skřivánek  Petr
    A      Kocan      Ivo
    A      Kocan      Martin
    A      Málek      Jiří
    A      Skřivánek  František
    

    Na závěr je vhodné po sobě v databázi uklidit:

    drop table dluznici;
    

    Pro úplnost dodejme, že požadovaného výsledku lze dosáhnout celou řadou dalších způsobů. Cílem tohoto tipu-triku bylo ukázat, že volby pro vzestupné a sestupné třídění lze libovolně u jednotlivých sloupců kombinovat.

    Související články:
    365 x SQL = praxe, Díl 18. – Spojujeme a spojujeme (08.06.2004)
    365 x SQL = praxe, Díl 17. – Slučujeme a slučujeme (10.05.2004)
    365 x SQL = praxe, Díl 16. – Automatické konverze (03.05.2004)
    365 x SQL = praxe, Díl 15. – Datumy odtud … (26.04.2004)
    365 x SQL = praxe, Díl 14. – Narodil jsem se loni! (19.04.2004)
    365 x SQL = praxe, Díl 13. – Data do dat (31.03.2004)
    365 x SQL = praxe, Díl 12. – Interní update (24.03.2004)
    365 x SQL = praxe, Díl 11. – Interní podmínky (22.03.2004)
    365 x SQL = praxe, Díl 10. – Která příjmení jsou dvakrát? (18.03.2004)
    365 x SQL = praxe, Díl 9. - Jak na třídění skupin? (15.03.2004)
    365 x SQL = praxe, Díl 8. – Kolikrát jaké příjmení? (10.03.2004)
    365 x SQL = praxe, Díl 7. – Jak spočítat jedinečné hodnoty? (09.03.2004)
    365 x SQL = praxe, Díl 6. – Hvězdička? Atributy! (08.03.2004)
    365 x SQL = praxe, Díl 5. – Počítací minimax a NULL hodnoty (05.03.2004)
    365 x SQL = praxe, Díl 4. – Pozor na NULL (04.03.2004)
    365 x SQL = praxe, Díl 3. – Slučování řetězců (03.03.2004)
    365 x SQL = praxe, Díl 2. – LIKE poprvé (02.03.2004)

    ( Celý článek! | Autor: František Skřivánek | Počet komentářů: 2 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

    Anketa
    Kolik ročně utratíte za dovolené?

    Nic 
     (1557 hl.)
    Do 1 000,- Kč 
     (1074 hl.)
    Do 10 000,- Kč 
     (1003 hl.)
    Do 25 000,- Kč 
     (1385 hl.)
    Do 50 000,- Kč 
     (1019 hl.)
    Do 75 000,- Kč 
     (1183 hl.)
    Více než 75 000,- Kč 
     (1022 hl.)

    Celkem hlasovalo: 8243


    Poslední komentáře
    frontierd@126.com
    frontierd@126.com
    frontierd@126.com
    c
    http://www.coachoutl

    Newsletter
    Přihlaste si nezávazně - i bez registrace - odběr informačního newsletteru. Podrobné informace najdete zde.

    Emailová adresa:


    Kalendář
    <<  Leden  >>
    PoÚtStČtSoNe
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    

    Redakci připojuje


    Nejčtenější

    Databáze je prázdná!


    Nejvíce komentářů

    Databáze je prázdná!


    Reklama






    Nenechte si ujít články na dalších webech




    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.

    Databázový svět | dfKlub - digitální fotografie | Vtipník - vtipy přímo k Vám | Reminder - přestaňte zapomínat | Databázový svět

    Copyright (c) 2004 AVRE Publishing, spol. s r.o. Všechna práva vyhrazena