abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 17:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek i s náhledy aplikací v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 1
    včera 21:55 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 20 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Nová verze

    Desktopové prostředí Cinnamon, vyvíjené primárně pro distribuci Linux Mint, dospělo do verze 6.0. Seznam změn obsahuje především menší opravy a v říjnovém přehledu novinek v Mintu avizovanou experimentální podporu Waylandu.

    Fluttershy, yay! | Komentářů: 3
    včera 13:44 | Nová verze

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzích 2.2.2 a 2.1.14. Přináší důležitou opravu chyby vedoucí k možnému poškození dat.

    Ladislav Hagara | Komentářů: 0
    včera 12:00 | Bezpečnostní upozornění

    V ownCloudu byly nalezeny tři kritické zranitelnosti: CVE-2023-49103, CVE-2023-49104 a CVE-2023-49105 s CVSS 10.0, 8.7 a 9.8. Zranitelnost CVE-2023-49103 je právě využívána útočníky. Nextcloudu se zranitelnosti netýkají.

    Ladislav Hagara | Komentářů: 0
    včera 08:00 | IT novinky

    I letos vychází řada ajťáckých adventních kalendářů. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2023. Pro programátory v Perlu je určen Perl Advent Calendar 2023. Zájemci o UX mohou sledovat Lean UXmas 2023. Pro zájemce o kybernetickou bezpečnost je určen Advent of Cyber 2023

    Ladislav Hagara | Komentářů: 0
    včera 07:00 | Nová verze

    Byla vydána verze 2.12 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    30.11. 21:11 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 23.11 Topi. Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    30.11. 16:22 | Nová verze

    Po 4 měsících vývoje byla vydána nová verze 4.2 multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu a na YouTube.

    Ladislav Hagara | Komentářů: 0
    30.11. 16:11 | Nová verze

    Byla vydána nová stabilní verze 23.11 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Tapir. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
     (35%)
     (17%)
     (48%)
    Celkem 23 hlasů
     Komentářů: 0
    Rozcestník

    Dotaz: MySQL - podmínka pro sloupec

    17.9.2012 11:23 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    MySQL - podmínka pro sloupec
    Přečteno: 395×
    V MySQL mám takovou tabulku -
    +----+------------+----------+----------+
    | id | product_id | group_id | price    |
    +----+------------+----------+----------+
    | 61 |          3 |        0 |   100.00 |
    | 62 |          3 |        2 |   100.00 |
    |  6 |          4 |        0 | 10000.00 |
    +----+------------+----------+----------+
    
    
    A jde mi zde o sloupec group_id. Potřeboval bych z této tabulky dostat takové řádky, že pokud bude obsahovat pro jeden product_id jak řádek s group_id=0, tak i s group_id=2, tak aby mi to vrátilo řádek s group_id=2, ale pokud pro daný product_id bude jenom group_id=0, tak aby mi to vrátilo řádek s group_id=0. Zkoušel jsem už různé možnosti, ale nějak se mi nedaří přijít na to jak definovat WHERE podmínku.

    Předem děkuji za rady.

    Odpovědi

    17.9.2012 12:43 darkenik
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    nieco take by mohlo fungovat select * from tabulka where (group_id > 0) OR ( group_id=0 AND NOT group_id > 0);
    17.9.2012 12:56 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    To bylo to první co jsem zkoušel
    SELECT id, product_id, group_id, price FROM tabulka WHERE group_id=2 OR (group_id=0 AND NOT group_id=2)
    
    a toto mi to vyplivne:
    +----+------------+----------+--------+
    | id | product_id | group_id | price  |
    +----+------------+----------+--------+
    | 61 |          3 |        0 | 100.00 |
    | 62 |          3 |        2 | 100.00 |
    +----+------------+----------+--------+
    
    17.9.2012 13:30 kuka
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    (group_id=0 AND NOT group_id=2) ma delat co? Cele je to z principu nesmysl, protoze podminka se aplikuje na jeden radek tabulky, tzn. nemuze jakkoliv osetrit existenci jineho radku s nejakymi vlastnostmi. SQL na toto nema moc hezke prostredky, trivialne lze napr. (napsal jsem to presne jak je tve zadani, ktere se mi ale zda hodne divne...)

    -- existuje pouze radek s group_id = 0
    select * from tabulka t
    where group_id = 0
      and not exists ( select 0 from tabulka
                         where product_id = t.product_id
                           and group_id != 0 )
    union all
    -- existuje group_id = 2 i group_id = 0 a chci dvojku
    select * from tabulka t
    where group_id = 2
      and exists ( select 0 from tabulka
                     where product_id = t.product_id
                       and group_id = 0 )
    

    nebo by sel pouzit outer join sam na sebe. Jsou i dalsi reseni, zalezi na tom co presne potrebujes, jestli te trapi vykon apod. Nejefektivnejsi casto byva spojeni s proceduralnim zpracovanim, pokud prichazi z hlediska aplikace v uvahu.
    17.9.2012 14:57 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    Ono jde o to, že daná cena může být pro group_id=0 - všechny uživatele, nebo pro group_id=x, kde x je skupina daného uživatele. A když je cena pro všechny uživatele bez ohledu na skupinu stejná, tak se používá group_id=0, jinak group_id=x. Takže potřebuju právě získat nejprve ceny pro group_id=x a když pro group_id=x není, tak pak výchozí cenu pro group_id=0.
    17.9.2012 15:29 kuka
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    No ja bych to nepitval, asi vis sam nejlip, co potrebujes. V otazce to podle mne pises trochu jinak ("bude jenom group_id=0"), takze si pripadne musis upravit podminku v prvnim dotazu. Rovnez podminka ve druhem dotazu vychazi ze zadani ("s group_id=0, tak i s group_id=2"), pokud je existence radku pro group_id=0 vzdy zarucena, tak tam podminka samozrejme nemusi vubec byt.
    17.9.2012 15:48 Kit
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    Kdybys dokázal specifikovat problém, tak bys možná na to i sám přišel. Takto jenom věštíme. Má mít group_id nějakou konkrétní hodnotu a v případě absence se má použít group_id=0?
    17.9.2012 12:56 Kit
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    Má to sice k dokonalosti daleko, ale mohlo by to fungovat:
    SELECT * FROM
       (SELECT * FROM tab ORDER BY group_id DESC) AS tab2
       GROUP BY product_id;
    17.9.2012 23:20 Jirka
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    SELECT
      COALESCE(t2.id, t1.id),
      t1.product_id,
      COALESCE(t2.group_id, t1.group_id),
      COALESCE(t2.price, t1.price)
    FROM
      tab t1
      LEFT JOIN tab t2 ON (t1.product_id=t2.product_id AND t2.group_id=2)
    WHERE
      t1.group_id = 0;
    
    18.9.2012 00:20 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: MySQL - podmínka pro sloupec
    Jednoduché - prostě chceš řádky s group_id 2 a takové s groupid 0, ke kterým neexistuje groupid 2...
    SELECT * FROM tabulka WHERE 
    group_id  = 2 OR 
    (group_id = 0 AND product_id NOT IN (SELECT product_id FROM tabulka WHERE group_id = 2))
    
    Pokud bys chtěl řádek s nejvyšším groupid (obecnější řešení), tak
    
    SELECT * FROM TABULKA WHERE (product_id, group_id) IN 
    (SELECT product_id , MAX(group_id) FROM tabulka GROUP BY product_id)
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.