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 11:44 | Nová verze

    Byla vydána nová verze 25.05.11 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Nejnovější Shotcut je již vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

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

    Svobodný elektronický platební systém GNU Taler (Wikipedie, cgit) byl vydán ve verzi 1.0. GNU Taler chrání soukromí plátců a zároveň zajišťuje, aby byl příjem viditelný pro úřady. S vydáním verze 1.0 byl systém spuštěn ve Švýcarsku.

    Ladislav Hagara | Komentářů: 2
    dnes 00:55 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Komunita

    GNOME Foundation má nového výkonného ředitele. Po deseti měsících skončil dočasný výkonný ředitel Richard Littauer. Vedení nadace převzal Steven Deobald.

    Ladislav Hagara | Komentářů: 4
    10.5. 15:00 | Zajímavý článek

    Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.

    Ladislav Hagara | Komentářů: 17
    9.5. 17:22 | Nová verze

    Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.

    Ladislav Hagara | Komentářů: 6
    9.5. 15:22 | Komunita

    Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.

    Ladislav Hagara | Komentářů: 0
    8.5. 19:22 | Nová verze

    Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.5. 18:00 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    8.5. 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 591 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    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: 412×
    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.