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 17:33 | Nová verze

    Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.

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

    Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

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

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

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

    Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | IT novinky

    Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.

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

    Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 10
    včera 16:22 | Nová verze

    Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.

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

    Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).

    Ladislav Hagara | Komentářů: 6
    včera 15:11 | Nová verze

    Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Humor

    Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.

    Ladislav Hagara | Komentářů: 9
    Jaké řešení používáte k vývoji / práci?
     (42%)
     (55%)
     (3%)
     (10%)
     (13%)
     (6%)
     (13%)
     (6%)
     (16%)
    Celkem 31 hlasů
     Komentářů: 4, poslední dnes 19:18
    Rozcestník

    Dotaz: MySQL update více polí dotazem

    18.2.2019 11:14 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    MySQL update více polí dotazem
    Přečteno: 531×
    Zdravím,

    Chci aktualizovat ( nově přidané ) sloupce LastPlace a LastDate pomocí největší hodnoty Time ( a z odpovídajícího řádku PC_Hostname ).

    Vypotil jsem ze sebe
    UPDATE Disks set ( SELECT PC_Hostname AS LastPlace, Time AS LastDate 
    FROM Collections WHERE DiskID = Disk.ID ORDER BY Time DESC LIMIT 1 )
    Ale to asi není správná cesta.

    Dokážu to udělat po jedné hodnotě, ale takto současně mi to nijak nevychází. Ani na netu jsem při hledání podobnou konstrukci neviděl.

    Asi to takto nepůjde, nebo je cestička ?

    Díky Milan

    Řešení dotazu:


    Odpovědi

    18.2.2019 11:17 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Ještě oprava v dotazu namísto Disk má být Disks
    18.2.2019 12:31 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Nakonec jsem "zaměstnal stroj" namísto hlavy ...
     
    UPDATE Disks  SET 
         LastPlace = ( 
              SELECT PC_Hostname FROM Collections 
                   WHERE Collections.DiskID = Disks.ID ORDER BY Collections.Time DESC LIMIT 1 
         ), 
         LastDate = ( 
              SELECT Time FROM Collections 
                  WHERE Collections.DiskID = Disks.ID ORDER BY Collections.Time DESC LIMIT 1 
         ) ;

    Není čas :)

    Ale kdyby to někdo uměl tou hlavou, nechám se poučit

    M.
    Řešení 1× (Milan Uhrák (tazatel))
    18.2.2019 12:54 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Zkusím z hlavy:
    UPDATE Disks AS D
        JOIN (SELECT DiskID, LastPlace, max(Time) AS LastDate
            FROM Collections GROUP BY DiskID) AS C
        ON D.ID=C.DiskID
        SET D.LastPlace=C.LastPlace,
            D.LastDate=C.LastDate;
    Bez záruky.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    18.2.2019 22:22 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Zato to vypadá slibně. Ráno určitě vyzkouším.

    Děkuji za inspiraci

    M.
    20.2.2019 08:51 j
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    To ti fungovat nebude ;D ....

    SELECT DiskID, LastPlace, max(Time) AS LastDate FROM Collections GROUP BY DiskID

    Vynada ti to za ten LastPlace. Musis nejdriv zjistit ten max time a pak ho dat do join/where. A bude to fungovat jen za predpokladu, ze je pro konkretni DiskID unikatni.

    Tzn nejdriv potrebujes

    SELECT DiskID, max(Time) AS LastDate FROM Collections GROUP BY DiskID

    A pak nejak tak (group uz netreba, cas mas)

    SELECT DiskID, LastPlace, Time AS LastDate FROM Collections as x join ( SELECT DiskID, max(Time) AS LastDate FROM Collections GROUP BY DiskID) as t on t.DiskID = x.DiskID and t.LastDate = x.Time

    Jo a btw, takovyhle veci vetsinou nejsou nijak uzasne rychly, spis presne naopak, takze to je spis takova prasecinka na jednorazovy pouziti.
    20.2.2019 10:49 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Ahoj, díky, tohle je už fakt masakr, tohle bych nevypotil. Těch disků je tam asi 150, záznamů k nim asi 35000( už to nějakou dobu sleduju, no ).

    Nakonec jsem to udělal po svém
     
    UPDATE Disks  SET 
       LastPlace = ( 
          SELECT PC_Hostname FROM Collections WHERE Collections.DiskID = Disks.ID ORDER BY Collections.Time DESC LIMIT 1 
       ), 
       LastDate = ( 
          SELECT Time FROM Collections WHERE Collections.DiskID = Disks.ID ORDER BY Collections.Time DESC LIMIT 1 
       ) ;

    Dotay opravdu není rychlý, ale svoje udělá.

    Možná by to šlo přes temporary table ... ale tuhle cestu namám prošlapanou, nebudu to už ani zkoušet .. asi.
    20.2.2019 10:54 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Díky, toto funguje... jen s úpravou JOIN (SELECT DiskID, PC_Hostname AS LastPlace, max(Time)
    20.2.2019 11:02 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Tedy, Kite, tohle vypotit z hlavy, a ještě fungující ... no tedy poklona ...

    Dotaz ( v PMA ) trval 0,8 sek. ( 150 disků, 35000 collections ).

    Jsem ohromen :-)

    Díky moc, mám se co učit

    M.
    20.2.2019 14:19 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: MySQL update více polí dotazem
    Díky za uznání, je to pro mne významným stimulem.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

    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.