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í
×
    včera 14:55 | Nová verze

    KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | IT novinky

    Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.

    Ladislav Hagara | Komentářů: 3
    včera 04:44 | Zajímavý článek

    Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).

    Ladislav Hagara | Komentářů: 2
    včera 00:33 | Nová verze

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

    Ladislav Hagara | Komentářů: 0
    včera 00:11 | Zajímavý software

    Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.

    Ladislav Hagara | Komentářů: 5
    19.3. 19:22 | Nová verze

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

    Ladislav Hagara | Komentářů: 0
    19.3. 04:00 | Bezpečnostní upozornění

    Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.

    Ladislav Hagara | Komentářů: 4
    19.3. 03:33 | Zajímavý software

    Nightingale je open-source karaoke aplikace, která z jakékoliv písničky lokálního alba (včetně videí) dokáže oddělit vokály, získat text a vše přehrát se synchronizací na úrovni jednotlivých slov a hodnocením intonace. Pro separaci vokálů využívá UVR Karaoke model s Demucs od Mety, texty písní stahuje z lrclib.net (LRCLIB), případně extrahuje pomocí whisperX, který rovněž využívá k načasování slov. V případě audiosouborů aplikace na

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    18.3. 18:22 | Nová verze

    Po půl roce vývoje od vydání verze 49 bylo vydáno GNOME 50 s kódovým názvem Tokyo (Mastodon). 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ářů: 32
    18.3. 17:22 | Nová verze

    Článek na stránkách Fedora Magazinu informuje o vydání Fedora Asahi Remixu 43, tj. linuxové distribuce pro Apple Silicon vycházející z Fedora Linuxu 43.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1119 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: 1919×
    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.