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

    Open source počítačová hra na hrdiny NetHack (Wikipedie, GitHub) byla vydána v nové verzi 5.0.0. První verze této hry byla vydána v roce 1987.

    Ladislav Hagara | Komentářů: 2
    1.5. 15:11 | IT novinky

    Evropská komise naléhavě vyzvala členské státy EU, aby kvůli ochraně nezletilých na internetu urychlily zavádění unijní aplikace pro ověřování věku a zajistily její dostupnost do konce roku. Členské státy mohou zavést aplikaci EU pro ověřování věku jako samostatnou aplikaci nebo ji integrovat do takzvané evropské peněženky digitální identity.

    Ladislav Hagara | Komentářů: 16
    30.4. 23:33 | Nová verze

    Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    30.4. 23:11 | Nová verze

    Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    30.4. 12:11 | IT novinky

    Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.

    Ladislav Hagara | Komentářů: 37
    30.4. 11:44 | Komunita

    Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.

    Ladislav Hagara | Komentářů: 0
    30.4. 01:11 | IT novinky

    Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.

    Ladislav Hagara | Komentářů: 58
    29.4. 23:44 | Bezpečnostní upozornění

    Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.

    Ladislav Hagara | Komentářů: 4
    29.4. 17:44 | Nová verze

    Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    29.4. 04:44 | Komunita

    Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.

    Ladislav Hagara | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (24%)
    Celkem 1481 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: MySQL procedúra a rekurzívne vyhľadávanie

    10.11.2016 16:08 Peter
    MySQL procedúra a rekurzívne vyhľadávanie
    Přečteno: 1627×
    Dobrý deň vám prajem. Mám 2 tabuľky:

    t1
    id | polozka
    1  | darcekova krabica
    2  | kancelarsky darcek
    3  | pero
    4  | ceruzka
    5  | tuha
    6  | voucher
    7  | obal
    
    t2
    t1_id | obsah (opäť je to odkaz na t1.id)
    1     | 2
    1     | 6
    2     | 3
    2     | 4
    4     | 5
    4     | 7
    
    Čiže máme tabuľku t1, ktorá obsahuje nejaký produkt, ktorý sa z niečoho skladá a to zloženie je definované v tabuľke t2. Čiže v tomto príklade za darčeková krabica skladá z kancelárskeho darčeka a vouchera. Ale kancelársky darček sa skladá z pera a ceruzky. A nakoniec ceruzka sa skladá z tuhy a obalu. A ja potrebujem všetky id z ktorých sa skladá nadradený produkt (v tomto príklade darčeková krabica). Predpokladám, že toto je úloha pre rekurziu a zatiaľ som stvoril takéto niečo:
    delimiter //
    
    create procedure get_product(in id int)
    
    this_proc:begin
      declare loop_begin int;
      declare recursion int;
    
      set loop_begin=0;
      set recursion=0;
    
      set @trans=(select concat("trans_", replace(uuid(), '-', '')));
    
      set @create = concat('create temporary table if not exists ', @trans, '(id int unsigned not null auto_increment primary key, data int)');
      prepare stmt from @create;
      execute stmt;
      deallocate prepare stmt;
    
      set @insert = concat('insert into ', @trans, ' select NULL, obsah from t2 where t1_id=', id);
      prepare stmt from @insert;
      execute stmt;
      deallocate prepare stmt;
    
      set @select = concat('select max(id) into @loop_end from ', @trans);
      prepare stmt from @select;
      execute stmt;
      deallocate prepare stmt;
    
    
      if(@loop_end is not null) then
        while(loop_begin<@loop_end) do
          set loop_begin=loop_begin+1;
          set @select = concat('select data into @result from ', @trans, ' where id=', loop_begin);
          prepare stmt from @select;
          execute stmt;
          deallocate prepare stmt;
          set recursion=@result;
          select recursion;
          call get_product(recursion);
        end while;
      end if;
              
    end//
    
    delimiter ;
    
    Ale táto procedúra mi končí keď sa dostane na položku ktorá už nikde neodkazuje. Čiže v tomto príklade dostanem 1,2,3.

    Vie mi s tým niekto pomôcť? Za všetky rady vám vopred veľmi pekne ďakujem.

    Řešení dotazu:


    Odpovědi

    10.11.2016 21:46 NN
    Rozbalit Rozbalit vše Re: MySQL procedúra a rekurzívne vyhľadávanie
    Domaci ukol?
    11.11.2016 09:42 Peter
    Rozbalit Rozbalit vše Re: MySQL procedúra a rekurzívne vyhľadávanie
    Nie
    18.11.2016 15:50 Georgeek | skóre: 4
    Rozbalit Rozbalit vše Re: MySQL procedúra a rekurzívne vyhľadávanie
    Mrkni na tento odstavec: The Nested Set Model.

    Je to sice jen princip, ale je to asi nejobecnější metoda pro každé SQL. Lépe to jde v PostgreSQL (SQLite, t-SQL), protože ten implementuje standard SQL99, který to umožňuje vyjádřit lépe a efektivněji.
    Josef Kufner avatar 21.11.2016 18:30 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: MySQL procedúra a rekurzívne vyhľadávanie
    Případně na totéž na Wikipedii.

    Ve výsledku bude stačit jeden jednoduchý select na získání celého podstromu.

    Pro snadnější renderování a opravy left/right indexů doporučuju držet parent ID jako primární údaj. Left/right pak dopočítáš (pomalým) rekurzivním algoritmem. Může se snadno stát, že updaty uděláš blbě a strom se rozsype (parent ID tě pak zachrání). Pro snadnost renderování nabídek doporučuju ještě dopočítávat hloubku ve stromu. Vystačíš si pak s jednoduchým nerekurzivním algoritmem, který ze selectu udělá stromové menu (hloubka se hodí hlavně na zavírání tagů). Tedy v databázi budeš mít uživatelem editované sloupečky id a parent_id. A pak tam budeš mít vypočítávané sloupečky tree_left, tree_right, tree_depth. Případně ještě můžeš přidat tree_root_id, pokud máš mnoho malých stromů (pro rychlejší updaty).
    Hello world ! Segmentation fault (core dumped)

    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.