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 20:22 | IT novinky

    Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.

    Ladislav Hagara | Komentářů: 0
    dnes 12:55 | Zajímavý software

    Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 05:55 | Komunita

    O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.

    Ladislav Hagara | Komentářů: 10
    včera 05:22 | Komunita

    Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.

    Ladislav Hagara | Komentářů: 4
    včera 04:00 | Humor

    Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 7
    27.3. 13:00 | Komunita

    Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.

    Ladislav Hagara | Komentářů: 10
    27.3. 12:11 | Nová verze

    Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.

    Ladislav Hagara | Komentářů: 2
    27.3. 02:22 | Komunita Ladislav Hagara | Komentářů: 11
    26.3. 23:22 | Komunita

    Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.

    Ladislav Hagara | Komentářů: 3
    26.3. 22:33 | Nová verze

    Byla vydána nová verze 7.6 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Správce hesel KeePassXC byl nahrazen správcem hesel GNOME Secrets. Bitcoinová peněženka Electrum byla povýšena na verzi 4.7.0. Tor Browser byl povýšen na verzi 15.0.8. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (30%)
     (2%)
     (5%)
     (1%)
     (14%)
     (24%)
    Celkem 1181 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: SELECT v spojovacej podmienke

    31.8.2021 13:23 julo
    SELECT v spojovacej podmienke
    Přečteno: 1926×
    Potrebujem pri spajani tabuliek vybrat najaktualnejsi zaznam.
    SELECT ....
    FROM table t
    INNER JOIN table2 t2 ON ( (t2.id=t.id) AND ( (SELECT t2.label from t2 WHERE (t2.id=t.id) ORDER BY t2.datum DESC LIMIT 1) = t2.label) )
    JOIN table3...
    
    Oracle 11g vsak hlasi
    Invalid expression JOIN table3
                            *
    
    Oracle sice nepodporuje LIMIT do verzie 12c, ale to vsak irelevantne v tomto pripade, lebo evidentne aj bez toho ma s tym (ten isty) problem.

    Teda moja otazka je, ci je takyto SELECT v spojovacej podmienke podporovany.

    Odpovědi

    31.8.2021 14:16 kaaja
    Rozbalit Rozbalit vše Re: SELECT v spojovacej podmienke
    A nebude lepší si t2 profiltrovat na poslední záznam pro dané pro dané ID a pak připojit?
    select ....
    from table t
    inner join (
      select t2.*, row_number() over( partition by t2.id order by t2.datum DESC ) rn
      from table2 t2
    ) t2_filtered on t2_filtered.id = t.id and t2_filtered.rn =1
    
    31.8.2021 18:26 j
    Rozbalit Rozbalit vše Re: SELECT v spojovacej podmienke
    Vyrabis cyklus/potencielne nekonecnou rekurzi, a to se parserum SQL vetsinou moc nelibi. A to nemluvim o tom, jak neuveritelne pomaly by neco takovyho bylo.

    Takze viz predchozi, udelej si nejdriv select tech nejnovejsich zaznamu a ten joini. Udelat se to da ruzne. Muzes pouzit trebas inner join select ... , to se jako filtr chova.

    ---

    Dete s tim guuglem dopice!
    1.9.2021 07:35 Tomáš
    Rozbalit Rozbalit vše Re: SELECT v spojovacej podmienke

    Select v kauzuli "on" opravdu mít nemůžete. Do klauzuje "on" se píšou jenom predikáty pro spojení tabulek. Krom toho: co když vybrané "label" je stejné pro více záznamů? Pak by dotaz asi neudělal to co si představujete.

    Řešení může být např.

    select 
      t.*
      ,t2.*
    from table t
    join table2 t2 on  t.id=t2.id
    join ( select id, max(datum) as max_datum from table2 group by id ) t3 on t3.id = t.id and t3.max_datum = t2.datum
    

    Existuje i výkonější varianta jen s jedním joinem:

    select 
      t.id
      ,max(t.value1) keep ( dense_rank first order by datum ) as value1
      ,max(t.value2) keep ( dense_rank first order by datum ) as value2
      ,...
      ,max(t2.valueA) keep ( dense_rank first order by datum ) as valueA
      ,max(t2.valueB) keep ( dense_rank first order by datum ) as valueB
      ,...
    from table t
    join table2 t2 on  t.id=t2.id
    group by
      t.id
    

    Snad je patern jasný. Agregační funkci max v prvním čtení ignoruje. Ta zafunguje jen v případě, že by jste neměl totální uspořádáni ( záznamy se stejným datumem pro jedno id). Podstatné pro seřazení je část s dense_rank first order by ... . Ta určuje řazení, podle kterého vyberete první/poslední záznam.

    4.9.2021 03:34 kvr
    Rozbalit Rozbalit vše Re: SELECT v spojovacej podmienke
    Oracle po ruce nemám, ale v prvé řadě mi přijde nesmysl ta FROM vnořeného SELECT. t2 je prakticky alias na aktuální řádek, jaký má smysl SELECT z daného řádku a defakto porovnání samo se sebou (není-li t2 existující tabulka či alias předchozího SELECT) ?

    Takže ta chyba může být dřív, akorát je z toho tak vedle, že spadne až o něco později a postěžuje si na zdánlivě korektní JOIN table3. ... což je tedy otázka, neboť zde je příklad useknutý...

    K té první části tedy, jestli mělo být cílem najít nejnovější řádek s daným label, tak bych čekal znovu table2 t2i, například (zcela tam vypadnul label, který ale v původním příklad nedává příliš smysl, neboť by měl být vždycky stejný - chce to vyjasnit cíl, potom se dá dořešit):

    SELECT .... FROM table t INNER JOIN table2 t2 ON ( (t2.id = (SELECT t2i.id from table2 t2i WHERE (t2i.id=t.id ) ORDER BY t2i.datum DESC LIMIT 1) ) ) JOIN table3...

    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.