Dnes: 10. září 2010    | 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?
    SŘBD
    (Systém řízení báze dat)

    Programový systém umožňující vytváření, údržbu a použití báze dat. Podle komplexnosti je možné SŘBD rozdělit na nižší (např. PC Fand), střední (FoxPro) a vyspělé (Oracle 9i).

    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.

    Moodle v ČR - LMS Moodle a e-learning profesionálně od společnosti PragoData Consulting

    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?
    Vydáno dne 01. 03. 2004

    [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í
     

    Nenechte si ujít
    Seriál 365 x SQL - Tipy triky pro SQL

    Anketa
    Chystáte koupi nového vozu?

    Ano 
     (2499 hl.)
    Ne 
     (2357 hl.)
    Ano, tak během roku 
     (1850 hl.)
    Ano, tak během dvou let 
     (2098 hl.)

    Celkem hlasovalo: 8804


    Poslední komentáře
    Bude seriál?
    Row movement
    rekurze
    geography from text
    Další termín

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

    Emailová adresa:


    Přihlášení čtenáře
    Uživatelské jméno:
    Heslo:


    Registrace nového čtenáře!

    Kalendář
    <<  Září  >>
    PoÚtStČtSoNe
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   

    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