Výsledky 1 až 10 z 10

Téma: Zadání správného příkazu do MySQL database...

  1. #1

    Standardní Zadání správného příkazu do MySQL database...

    Čus,
    prosím o malou pomoc...
    představte si tabulku, třeba se zbožím, kde každý řádek bude obsahovat několik políček (datum, název, cena, popis, vaha a dalsi)
    Potřebuji seřadit tuto tabulku podle datumu a ještě aby bližší datum byl nahoře a další řádky aby datum postupně nabýval.

    SELECT * FROM `db_tabulka` ORDER BY `db_tabulka`.`datum` ASC

    tenhle příkaz je v pohodě, ALE...
    pak tam mám pár nových řádků, které ještě datum nemají a ty bych potřeboval dát úplně nakonec tabulky....
    Jenže příkazem výše uvedeným se mi napřed dají do tabulky ty bez datumu a pak teprve s datumem...

    příklad:
    2012-06-28, krabice xyz, 49.20 Kč , malá bílá krabička, 1.2 Kg
    2012-06-29, krabice abc, 54.40 Kč , malá modrá krabička, 1.4 Kg
    2012-07-01, krabice dfg, 44.20 Kč , velká bílá krabička, 1.3 Kg
    (bez datumu), krabice sfdg, 34.20 Kč , velká černá krabička, 1.0 Kg (jenže tenhle řádek se mi dává jako první a já jej chci nakonec)

    Napadá vás jak volat příkaz ?
    Paul Atreides
    NPE-squad.com - Clan Leader

    COMP: Win7 x64 prof. | C2D E8400 3Ghz | ASUS P5B DeLuxe | Corsair 6000 MB DDR2 800MHz | ASUS GTX 560 Ti 1GB-DDR5 | SB Audigy SE 7.1 | Seagate 1000GB & 500GB (šuple WD 320GB) | Corsair 520W | 26" LG fullHD 1920x1080px 8ms
    NAS-server: Win Home Server 2011 | 1,6 Atom D525 (2 core | 4 threads) | ASrock mini-ITX | 4 GB DDR3 800MHz | Western 1TB GreenPower | Fortron 200W 80-BronzePlus | ftp, web, mumble, vpn, Servio DLNA share system, komplet PLEXI case
    NetBook: ASUS Eee1001PQ (violet) | 1,6 ATOM | 1 GB RAM | 250GB HDD | 1024x600 px LCD | baterie 7h :)
    FOTO: Olympus E-520 | 14-42 ZuikoDigital | 40-150 ZuikoDigital

  2. #2
    Senior Member Avatar uživatele D_a_v_i_d
    Založen
    08.12.2002
    Bydliště
    Praha
    Věk
    44
    Příspěvky
    5 153
    Vliv
    360

    Standardní Re: Zadání správného příkazu do MySQL database...

    Tak myslím, že by určitě pomohlo toto (nejdřív vytahám ty co datum mají, dám je setřídit, pak k nim přilepim ten zbytek)

    Kód:
    SELECT * FROM `db_tabulka` ORDER BY `db_tabulka`.`datum` ASC WHERE 'datum' is not NULL 
    UNION ALL
    SELECT * FROM `db_tabulka` WHERE 'datum' is NULL
    Počítám zde s tím, že nevyplněno znamená NULL, pokud je to jinak, musel by sis to upravit.
    A Jedi gains power through understanding; a Sith gains understanding through power

    Destkop machine: Intel Core i5 2400/MSI P67A-C45 /2x4 GB DDR3 1333 MHz/Sapphire HD6790/22" LCD HP w2216/DSL 8MBit connected
    Na filmy v posteli: Lenovo IdeaPad S9e/1,6 GHz Intel Atom, 1 GB RAM, 80 GB HDD
    Na práci: Dell E5500/T9550 2,66 GHz Intel, 3 GB RAM, 120 GB HDD

  3. #3

    Standardní Re: Zadání správného příkazu do MySQL database...

    Ano je tam NULL, když datum není... Jdu to vyzkoušet...
    Paul Atreides
    NPE-squad.com - Clan Leader

    COMP: Win7 x64 prof. | C2D E8400 3Ghz | ASUS P5B DeLuxe | Corsair 6000 MB DDR2 800MHz | ASUS GTX 560 Ti 1GB-DDR5 | SB Audigy SE 7.1 | Seagate 1000GB & 500GB (šuple WD 320GB) | Corsair 520W | 26" LG fullHD 1920x1080px 8ms
    NAS-server: Win Home Server 2011 | 1,6 Atom D525 (2 core | 4 threads) | ASrock mini-ITX | 4 GB DDR3 800MHz | Western 1TB GreenPower | Fortron 200W 80-BronzePlus | ftp, web, mumble, vpn, Servio DLNA share system, komplet PLEXI case
    NetBook: ASUS Eee1001PQ (violet) | 1,6 ATOM | 1 GB RAM | 250GB HDD | 1024x600 px LCD | baterie 7h :)
    FOTO: Olympus E-520 | 14-42 ZuikoDigital | 40-150 ZuikoDigital

  4. #4

    Standardní Re: Zadání správného příkazu do MySQL database...

    Tak tohle bohužel nefunguje....

    SELECT * FROM `db_tabulka` ORDER BY `db_tabulka`.`datum` ASC WHERE `datum` is not NULL
    UNION ALL
    SELECT * FROM `db_tabulka` WHERE `datum` is NULL

    takhle to napíše nesprávně použití WHERE
    a když to Where přehodím sem:


    SELECT * FROM `db_tabulka` WHERE `datum` is not NULL ORDER BY `db_tabulka`.`datum` ASC
    UNION ALL
    SELECT * FROM `db_tabulka` WHERE `datum` is NULL

    tak první část sice funguje, ale už to zase píše nesprávné užití UNION... ach jo
    Paul Atreides
    NPE-squad.com - Clan Leader

    COMP: Win7 x64 prof. | C2D E8400 3Ghz | ASUS P5B DeLuxe | Corsair 6000 MB DDR2 800MHz | ASUS GTX 560 Ti 1GB-DDR5 | SB Audigy SE 7.1 | Seagate 1000GB & 500GB (šuple WD 320GB) | Corsair 520W | 26" LG fullHD 1920x1080px 8ms
    NAS-server: Win Home Server 2011 | 1,6 Atom D525 (2 core | 4 threads) | ASrock mini-ITX | 4 GB DDR3 800MHz | Western 1TB GreenPower | Fortron 200W 80-BronzePlus | ftp, web, mumble, vpn, Servio DLNA share system, komplet PLEXI case
    NetBook: ASUS Eee1001PQ (violet) | 1,6 ATOM | 1 GB RAM | 250GB HDD | 1024x600 px LCD | baterie 7h :)
    FOTO: Olympus E-520 | 14-42 ZuikoDigital | 40-150 ZuikoDigital

  5. #5

    Standardní Re: Zadání správného příkazu do MySQL database...

    Nicméně přivedls, mě na myšlenku a ta funguje.... - ikdyž ji budu muset doplnit ještě pár podmínkama... nicméně i tak zatím Dík (K+ pokud to pujde)

    SELECT * FROM `db_tabulka` WHERE `datum` is not NULL
    UNION
    SELECT * FROM `db_tabulka` WHERE `datum` is NULL
    Paul Atreides
    NPE-squad.com - Clan Leader

    COMP: Win7 x64 prof. | C2D E8400 3Ghz | ASUS P5B DeLuxe | Corsair 6000 MB DDR2 800MHz | ASUS GTX 560 Ti 1GB-DDR5 | SB Audigy SE 7.1 | Seagate 1000GB & 500GB (šuple WD 320GB) | Corsair 520W | 26" LG fullHD 1920x1080px 8ms
    NAS-server: Win Home Server 2011 | 1,6 Atom D525 (2 core | 4 threads) | ASrock mini-ITX | 4 GB DDR3 800MHz | Western 1TB GreenPower | Fortron 200W 80-BronzePlus | ftp, web, mumble, vpn, Servio DLNA share system, komplet PLEXI case
    NetBook: ASUS Eee1001PQ (violet) | 1,6 ATOM | 1 GB RAM | 250GB HDD | 1024x600 px LCD | baterie 7h :)
    FOTO: Olympus E-520 | 14-42 ZuikoDigital | 40-150 ZuikoDigital

  6. #6
    Senior Member Avatar uživatele D_a_v_i_d
    Založen
    08.12.2002
    Bydliště
    Praha
    Věk
    44
    Příspěvky
    5 153
    Vliv
    360

    Standardní Re: Zadání správného příkazu do MySQL database...

    Jo jasný, za WHERE se omlouvám, jinak jsem našel jednu fintu

    Kód:
    NULLs are considered lower than any non-NULL value, except if a - (minus) character is added before the column name and ASC is changed to DESC, or DESC to ASC; this minus-before-column-name feature seems undocumented.
    zdroj zde: http://troels.arvin.dk/db/rdbms/#select-order_by

    Takže to vypadá, že by to mělo být takhle funkční:

    Kód:
    SELECT * FROM `db_tabulka` ORDER BY -`db_tabulka`.`datum` DESC
    Nemám tu nic na čem bych to vyzkoušel, ale našel jsem tu "minus fintu" na víc místech...

    EDIT> Další možností by bylo pomocí funkce COALESCE nahradit NULL datum nějakou dostatečně velkou hodnotou...

    Tedy něco jako

    Kód:
    SELECT * FROM `db_tabulka` ORDER BY COALESCE(`db_tabulka`.`datum`, '2050-12-31') ASC
    Příkaz COALESCE nahradí při vyhodnocení klauzule ORDER BY hodnoty NULL ve sloupci DATUM nějakým dostatečně vysokým, aby se při ORDER BY (něco) ASC dostaly na konec...
    Naposledy upravil D_a_v_i_d; 16.07.2012 v 11:21.
    A Jedi gains power through understanding; a Sith gains understanding through power

    Destkop machine: Intel Core i5 2400/MSI P67A-C45 /2x4 GB DDR3 1333 MHz/Sapphire HD6790/22" LCD HP w2216/DSL 8MBit connected
    Na filmy v posteli: Lenovo IdeaPad S9e/1,6 GHz Intel Atom, 1 GB RAM, 80 GB HDD
    Na práci: Dell E5500/T9550 2,66 GHz Intel, 3 GB RAM, 120 GB HDD

  7. #7

    Standardní Re: Zadání správného příkazu do MySQL database...

    ještě než to vyzkouším chtěl jsem ti dát K+ páč už takhle mi radíš... nicméně musím dát napřed dalším než se budu moci vrátit k tobě...

    A protože mi Admini ještě neodpověděli na mou položenou otázku ohledně rozdávání Karmy, tak se možná K+ ani nedočkáš (páč nemám komu bych ji jinak rozdal...)
    NICMÉNĚ TEDY DÍKY alespoň takhle...
    Paul Atreides
    NPE-squad.com - Clan Leader

    COMP: Win7 x64 prof. | C2D E8400 3Ghz | ASUS P5B DeLuxe | Corsair 6000 MB DDR2 800MHz | ASUS GTX 560 Ti 1GB-DDR5 | SB Audigy SE 7.1 | Seagate 1000GB & 500GB (šuple WD 320GB) | Corsair 520W | 26" LG fullHD 1920x1080px 8ms
    NAS-server: Win Home Server 2011 | 1,6 Atom D525 (2 core | 4 threads) | ASrock mini-ITX | 4 GB DDR3 800MHz | Western 1TB GreenPower | Fortron 200W 80-BronzePlus | ftp, web, mumble, vpn, Servio DLNA share system, komplet PLEXI case
    NetBook: ASUS Eee1001PQ (violet) | 1,6 ATOM | 1 GB RAM | 250GB HDD | 1024x600 px LCD | baterie 7h :)
    FOTO: Olympus E-520 | 14-42 ZuikoDigital | 40-150 ZuikoDigital

  8. #8
    Senior Member Avatar uživatele D_a_v_i_d
    Založen
    08.12.2002
    Bydliště
    Praha
    Věk
    44
    Příspěvky
    5 153
    Vliv
    360

    Standardní Re: Zadání správného příkazu do MySQL database...

    Tak hlavně napiš, jestli něco z toho co jsem napsal funguje... COALESCE by imho mělo. Trošku jsem tápal a nenavrhl jej hned, protože já standardně v práci pracuju v T-SQL na platformě MS SQL Serveru a občas tam jsou drobný odchylky, ale nakonec jsem nabyl dojmu, že i MySQL by to mělo takhle dát. Tu "mínus fintu" jsem nikdy nepoužil, ale na víc forech to radili jako postup, tak by to mohlo být taky funkční
    A Jedi gains power through understanding; a Sith gains understanding through power

    Destkop machine: Intel Core i5 2400/MSI P67A-C45 /2x4 GB DDR3 1333 MHz/Sapphire HD6790/22" LCD HP w2216/DSL 8MBit connected
    Na filmy v posteli: Lenovo IdeaPad S9e/1,6 GHz Intel Atom, 1 GB RAM, 80 GB HDD
    Na práci: Dell E5500/T9550 2,66 GHz Intel, 3 GB RAM, 120 GB HDD

  9. #9

    Standardní Re: Zadání správného příkazu do MySQL database...

    Tak ONO funguje jak finta s mínus tak COALESCE, jenže jako samotněj příkaz,
    když chci dát pod sebe skupinu příkazů
    1. napřed řádky co maj datum (order by nějak)
    2. pak řádky co maj zase tohle (a ty opět třídit nějak)
    3. a nakonec řádky co nemaj datum

    tak napíšu-li mezi tyto příkazy UNION tak to nefachá - přesněji napsáno (mmt)
    Ono těch podmínek je více, a já jsem si naivně myslel že je jednoduše spojím za sebe, jenže to nějak nejde, bo to neumim....
    1. podmínka
    SELECT * FROM `db_zakazky` ORDER BY -`db_zakazky`.`datumvyroby` DESC (napřed setřídit podle jednoho datumu, když datum nebude, tak druhá podmínka)

    2. podmínka
    SELECT * FROM `db_zakazky` ORDER BY -`db_zakazky`.`maxdatum` DESC (když není vyplněno první datum, tak třídit podle tohoto datumu, a pak teprve zobrazit vše zbylé BEZ datumu)
    Paul Atreides
    NPE-squad.com - Clan Leader

    COMP: Win7 x64 prof. | C2D E8400 3Ghz | ASUS P5B DeLuxe | Corsair 6000 MB DDR2 800MHz | ASUS GTX 560 Ti 1GB-DDR5 | SB Audigy SE 7.1 | Seagate 1000GB & 500GB (šuple WD 320GB) | Corsair 520W | 26" LG fullHD 1920x1080px 8ms
    NAS-server: Win Home Server 2011 | 1,6 Atom D525 (2 core | 4 threads) | ASrock mini-ITX | 4 GB DDR3 800MHz | Western 1TB GreenPower | Fortron 200W 80-BronzePlus | ftp, web, mumble, vpn, Servio DLNA share system, komplet PLEXI case
    NetBook: ASUS Eee1001PQ (violet) | 1,6 ATOM | 1 GB RAM | 250GB HDD | 1024x600 px LCD | baterie 7h :)
    FOTO: Olympus E-520 | 14-42 ZuikoDigital | 40-150 ZuikoDigital

  10. #10

    Standardní Re: Zadání správného příkazu do MySQL database...

    Citace Původně odeslal Atreides Zobrazit příspěvek
    Tak ONO funguje jak finta s mínus tak COALESCE, jenže jako samotněj příkaz,
    když chci dát pod sebe skupinu příkazů
    1. napřed řádky co maj datum (order by nějak)
    2. pak řádky co maj zase tohle (a ty opět třídit nějak)
    3. a nakonec řádky co nemaj datum

    tak napíšu-li mezi tyto příkazy UNION tak to nefachá - přesněji napsáno (mmt)
    Ono těch podmínek je více, a já jsem si naivně myslel že je jednoduše spojím za sebe, jenže to nějak nejde, bo to neumim....
    1. podmínka
    SELECT * FROM `db_zakazky` ORDER BY -`db_zakazky`.`datumvyroby` DESC (napřed setřídit podle jednoho datumu, když datum nebude, tak druhá podmínka)

    2. podmínka
    SELECT * FROM `db_zakazky` ORDER BY -`db_zakazky`.`maxdatum` DESC (když není vyplněno první datum, tak třídit podle tohoto datumu, a pak teprve zobrazit vše zbylé BEZ datumu)
    Kód:
    SELECT * FROM `db_zakazky` ORDER BY -`db_zakazky`.`datumvyroby` DESC, -`db_zakazky`.`maxdatum` DESC;
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. GB GA-965P-DS4 --->zjištění správného Vcore?
    Založil Millisx v sekci fóra Intel čipové sady
    Odpovědí: 5
    Poslední příspěvek: 23.10.2006, 14:45
  2. Database error
    Založil Paolo v sekci fóra Zprávy pro Administrátory
    Odpovědí: 2
    Poslední příspěvek: 24.08.2006, 08:43
  3. NASTAVENI SPRAVNEHO CASU
    Založil santamonicaboy v sekci fóra BIOSy
    Odpovědí: 1
    Poslední příspěvek: 02.08.2005, 08:21
  4. Možnosti rozšíření příkazů v CMD
    Založil Skodik v sekci fóra Ostatní operační systémy
    Odpovědí: 4
    Poslední příspěvek: 06.02.2005, 11:19

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •