abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:00 | IT novinky

    Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Bezpečnostní upozornění

    Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.

    Ladislav Hagara | Komentářů: 2
    dnes 02:44 | Komunita

    Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Nová verze

    Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 4
    včera 18:11 | Nová verze

    Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 05:55 | Nová verze

    Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).

    Ladislav Hagara | Komentářů: 16
    včera 05:11 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).

    Ladislav Hagara | Komentářů: 0
    včera 01:55 | Nová verze

    Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    2.12. 19:33 | Nová verze

    Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,2 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,42 %. Procesor AMD používá 66,72 % hráčů na Linuxu.

    Ladislav Hagara | Komentářů: 0
    2.12. 15:22 | IT novinky

    Canonical oznámil (YouTube), že nově nabízí svou podporu Ubuntu Pro také pro instance Ubuntu na WSL (Windows Subsystem for Linux).

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (47%)
     (19%)
     (18%)
     (23%)
     (15%)
     (25%)
     (16%)
     (18%)
    Celkem 426 hlasů
     Komentářů: 18, poslední 2.12. 18:34
    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: 438×
    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.