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 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ářů: 1
    dnes 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ářů: 0
    dnes 13:33 | Pozvánky

    Byl zveřejněn program konference Installfest 2026. Konference proběhne o víkendu 28. a 29. března v Praze na Karlově náměstí 13. Vstup zdarma.

    Ladislav Hagara | Komentářů: 1
    dnes 03:55 | Nová verze

    Byla vydána Java 26 / JDK 26. Nových vlastností (JEP - JDK Enhancement Proposal) je 10. Odstraněno bylo Applet API.

    Ladislav Hagara | Komentářů: 10
    včera 23:55 | Nová verze

    Byla vydána nová verze 260 správce systému a služeb systemd (Wikipedie, GitHub). Odstraněna byla podpora skriptů System V. Aktualizovány byly závislosti. Minimální verze Linuxu z 5.4 na 5.10, OpenSSL z 1.1.0 na 3.0.0, Pythonu z 3.7.0 na 3.9.0…

    Ladislav Hagara | Komentářů: 21
    včera 18:11 | Nová verze

    Byla vydána nová verze 5.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.

    Ladislav Hagara | Komentářů: 12
    včera 04:33 | Zajímavý projekt

    Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,

    … více »
    NUKE GAZA! 🎆 | Komentářů: 45
    16.3. 14:22 | IT novinky

    Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.

    Ladislav Hagara | Komentářů: 13
    16.3. 04:22 | Nová verze

    SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (1%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1106 hlasů
     Komentářů: 27, poslední včera 19:26
    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: 1626×
    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.