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 10:11 | IT novinky

    V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Komunita

    Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Zajímavý článek

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 02:00 | Nová verze

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | IT novinky

    Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.

    Ladislav Hagara | Komentářů: 3
    včera 14:44 | IT novinky

    Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.

    Ladislav Hagara | Komentářů: 3
    včera 12:22 | Bezpečnostní upozornění

    Rozšíření webového prohlížeče Urban VPN Proxy a další rozšíření od stejného vydavatele (např. 1ClickVPN Proxy, Urban Browser Guard či Urban Ad Blocker) od července 2025 skrytě zachytávají a odesílají celé konverzace uživatelů s AI nástroji (včetně ChatGPT, Claude, Gemini, Copilot aj.), a to nezávisle na tom, zda je VPN aktivní. Sběr probíhá bez možnosti jej uživatelsky vypnout a zahrnuje plný obsah dotazů a odpovědí, metadata relací i

    … více »
    Ladislav Hagara | Komentářů: 5
    včera 05:22 | Zajímavý software

    QStudio, tj. nástroj pro práci s SQL podporující více než 30 databází (MySQL, PostgreSQL, DuckDB, QuestDB, kdb+, …), se stal s vydáním verze 5.0 open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.

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

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

    Ladislav Hagara | Komentářů: 0
    včera 02:55 | Zajímavý článek

    Cloudflare Radar poskytuje aktuální informace o globálním internetovém provozu, útocích nebo trendech. Publikován byl celkový přehled za rok 2025. Globální internetový provoz vzrostl v roce 2025 o 19 %.

    Ladislav Hagara | Komentářů: 0
    Kdo vám letos nadělí dárek?
     (0%)
     (0%)
     (0%)
     (0%)
     (0%)
     (0%)
     (40%)
     (20%)
     (40%)
    Celkem 5 hlasů
     Komentářů: 7, poslední dnes 11:06
    Rozcestník

    Dotaz: SQL dotaz na posledni zaznam vztazeny k uzivateli

    31.3.2016 13:01 RadekXxX | skóre: 10
    SQL dotaz na posledni zaznam vztazeny k uzivateli
    Přečteno: 2729×
    Dobry den, mam tabulku treba knihovna, tam jsou sloupce:

    DatumVypujcky, NazevKnihy, Uzivatel

    potreboval bych sestavit dotaz na to, aby se me vypsaly vsichni uzivatele s posledni vypujcenou knihou (! pouze posledni zaznam od kazdeho uzivatele !). Muzete mi prosim nekdo poradit, jestli to vubec lze bez pouziti nejakych procedur, jedna se o MySQL ?

    Diky za rady

    Řešení dotazu:


    Odpovědi

    31.3.2016 14:10 RadekXxX | skóre: 10
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    Tak jsem to vyresil:

    SELECT * FROM Knihovna WHERE DatumVypujcky IN(SELECT MAX(DatumVypujcky) FROM Knihovna GROUP BY Uzivatel)
    31.3.2016 14:34 Filip Jirsák
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    Ještě musíte udělat vazbu mezi sloupci Uzivatel toho vnějšího a vnořeného SELECTu. Tohle by vám fungovalo jenom tehdy, kdyby si každý den půjčil jenom jeden uživatel.
    1.4.2016 07:43 RadekXxX | skóre: 10
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    Tohto nejak nechapu. DatumVypujcky ma datovy typ DateTime a ty uzivatele by to melo odelit pomoci "GROUP BY Uzivatel". Nebo jak jinak ten dotaz formulovat ? Jeste otestuji. Diky
    1.4.2016 10:03 Filip Jirsák
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    Ten vnitřní SELECT vám vrátí, že bylo něco vypůjčeno např. 1. 1. 2016 – a je to pro GROUP BY Uzivatel třeba Franta, ale to ten SELECT nevrací. Vnější SELECT pak najde všechny výpůjčky z 1. 1. 2016. Musíte si z toho vnitřního SELECTu vrátit i toho uživatele. Nevím, zda MySQL podporuje konstrukci (Uzivatel, DatumVypujcky) IN (SELECT …) – pokud ne, musíte to přepsat na JOIN:
    SELECT Knihovna.* FROM Knihovna
    JOIN 
     (SELECT Uzivatel, MAX(DatumVypujcky) AS DatumVypujcky FROM Knihovna GROUP BY Uzivatel) t USING (Uzivatel, DatumVypujcky)
    
    Pořád ale ten SELECT vrátí všechny výpůjčky uživatele v daný den. Pokud chcete jenom jednu výpůjčku, potřebujete mít nějakou sadu údajů Uzivatel+něco, která bude v rámci databáze unikátní, a podle které dokážete určit tu nejnovější výpůjčku – např. ta generovaná ID, jak píše EtDirloth. Pokud ta ID budou unikátní sama o sobě (tj. unikátní bude nejen dvojice Uzivatel,ID, ale i samotné ID), nepotřebujete do toho JOINu přidávat uživatele, protože ten už bude identifikován tím ID.
    1.4.2016 09:43 EtDirloth | skóre: 11
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    V tvojom rieseni su dve chyby:
    Po prve vid Filip Jirsák.
    Po druhe, ak nie je DatumVypujcky klucom, tak nebude splnena podmienka "pouze posledni zaznam":
    INSERT INTO Knihovna VALUES ('2016-03-31', 'Dracula', 'RadekXxX');
    INSERT INTO Knihovna VALUES ('2016-03-31', 'Miss Betty', 'RadekXxX');
    INSERT INTO Knihovna VALUES ('2016-03-31', 'The Mystery of the Sea', 'Filip Jirsák');
    INSERT INTO Knihovna VALUES ('2016-04-01', 'The Jewel of Seven Stars', 'Filip Jirsák');
    
    V MySQL by som skusil nejaku agregacnu funkciu - bud min, max, alebo group_concat:
    SELECT k.DatumVypujcky, MIN(k.NazevKnihy) AS NazevKnihy, k.Uzivatel
       FROM Knihovna AS k
       JOIN (SELECT Uzivatel, MAX(DatumVypujcky) AS max_DatumVypujcky
                FROM Knihovna
                GROUP BY Uzivatel
            ) AS g ON (k.Uzivatel = g.Uzivatel AND k.DatumVypujcky = g.max_DatumVypujcky)
       GROUP BY k.Uzivatel, k.DatumVypujcky;
    To vsak bude asi pomale pri vacsich Knihovnach.
    Robustnejsie by bolo vyuzit namiesto MAX(DatumVypujcky) nejaky autoinkrementujuci sa primarny kluc, ktory rastie spolu s datumom, t.j. neINSERTuju sa zaznamy so starsim DatumVypujcky, nez je max(DatumVypujcky) GROUP BY Uzivatel:
    SELECT * FROM Knihovna WHERE id IN (SELECT MAX(id) FROM Knihovna GROUP BY Uzivatel);
    1.4.2016 16:18 logik
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    Řešením tohoto jsou tzn. Window funkce - které však MySQL nepodporuje.

    Pokud můžeš (jde o Tvůj vlastní projekt), tak přejdi na Postgres.

    5.4.2016 12:55 Kazatel
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli
    Souhlas s výše uvedeným. Napadlo mě ještě jedno řešení - co takhle udržovat tabulku pouze aktuálních výpůjček? Pokud si nějakou knihu vypůjčí, zapíše se záznam do této tabulky. Pokud se publikace vrátí, pak se z tabulky smaže.

    Tím by mohl být slušně vyřešen performance problém s joinem a max() funkcí.
    xkucf03 avatar 14.5.2016 17:23 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: SQL dotaz na posledni zaznam vztazeny k uzivateli

    Zkus použít DISTINCT ON – prý to funguje i v MySQL.

    Univerzálnějším řešením jsou Window Functions, ale ty v MySQL AFAIK nejsou.

    Pokud není k dispozici ani jedno, jsou potřeba poměrně divoké poddotazy a spojování tabulek1. Pro srovnání:

    [1] pokud máš málo dat a neřešíš rychlost, tak je to použitelné – jinak bych hledal spíš jiné řešení, možná i na úrovni aplikace nebo změny datového modelu…

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    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.