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 14:00 | Zajímavý článek

    Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).

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

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.

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

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).

    Ladislav Hagara | Komentářů: 1
    včera 16:11 | Nová verze

    Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 2
    včera 15:55 | Komunita

    Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.

    Ladislav Hagara | Komentářů: 5
    16.7. 21:22 | IT novinky

    Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.

    Ladislav Hagara | Komentářů: 19
    16.7. 16:22 | IT novinky

    Vláda dne 16. července 2025 schválila návrh nového jednotného vizuálního stylu státní správy. Vytvořilo jej na základě veřejné soutěže studio Najbrt. Náklady na přípravu návrhu a metodiky činily tři miliony korun. Modernizovaný dvouocasý lev vychází z malého státního znaku. Vizuální styl doprovází originální písmo Czechia Sans.

    Ladislav Hagara | Komentářů: 26
    16.7. 15:33 | Upozornění

    Vyhledávač DuckDuckGo je podle webu DownDetector od 2:15 SELČ nedostupný. Opět fungovat začal na několik minut zhruba v 15:15. Další služby nesouvisející přímo s vyhledáváním, jako mapyAI asistent jsou dostupné. Pro některé dotazy během výpadku stále funguje zobrazování například textu z Wikipedie.

    bindiff | Komentářů: 8
    16.7. 13:33 | Bezpečnostní upozornění

    Více než 600 aplikací postavených na PHP frameworku Laravel je zranitelných vůči vzdálenému spuštění libovolného kódu. Útočníci mohou zneužít veřejně uniklé konfigurační klíče APP_KEY (např. z GitHubu). Z více než 260 000 APP_KEY získaných z GitHubu bylo ověřeno, že přes 600 aplikací je zranitelných. Zhruba 63 % úniků pochází z .env souborů, které často obsahují i další citlivé údaje (např. přístupové údaje k databázím nebo cloudovým službám).

    Ladislav Hagara | Komentářů: 5
    16.7. 00:11 | Nová verze

    Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.

    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (27%)
     (7%)
     (3%)
     (0%)
     (1%)
     (4%)
    Celkem 410 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: MySQL - nájdi prvé voľné číslo v číselnej postupnosti

    23.11.2011 11:42 Peter
    MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Přečteno: 1019×
    Dobrý deň vám prajem.

    Mám taký jeden menší problém a síce - mám tabuľku s riadkami v ktorých sa nachádzajú čísla (v každom riadku jedno - od hora dole) napríklad:

    1, 7, 2, 5, 4, 9, 6, 10

    čiže po sort-e to je:

    1, 2, 4, 5, 6, 7, 9, 10

    takže tu chýba číslo 3 a číslo 8.

    Ako nájdem práve to najmenšie chýbajúce číslo - čiže v tomto prípade číslo 3 a zároveň druhá možnosť, že ak by žiadne číslo nechýbalo - čiže by bol úplný rad 1 až 10 tak aby mi to vyhodilo číslo 11?

    Ak by sa to nedalo urobiť priamo v MySQL, tak dáta sa samozrejme spracovávajú v PHP :-D

    Vopred veľmi pekne ďakujem za pomoc.

    Řešení dotazu:


    Odpovědi

    23.11.2011 11:55 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Něco jako tohle by mělo fungovat i když efektvitou dotazu bych se moc nezaobíral. Pokud někdo vymyslí něco lepšího rád se přiučím:-)

    SELECT `cislo` + 1 AS `nedef` FROM `cisla` WHERE `cislo` + 1 NOT IN (SELECT `cislo` FROM `cisla`) LIMIT 1;

    Tabulka je cisla sloupec je cislo...
    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    Tarmaq avatar 23.11.2011 12:10 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    jeste by tam melo byt ORDER BY cislo
    Don't panic!
    23.11.2011 12:47 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Pravda na order jsem zapoměl
    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    23.11.2011 12:48 Kit
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Ten dotaz v podstatě je efektivní, protože pokud potřebujeme vyhodnotit vztah mezi řádky, bez vloženého dotazu se neobejdeme.

    Vyšlo mi to v SQLite téměř stejně:
    SELECT id+1 AS num FROM table WHERE num NOT IN (SELECT id FROM table) ORDER BY num LIMIT 1;
    Otázkou je, k čemu je to dobré. Obvykle se totiž jednou použité a smazané klíče již nerecyklují, protože bývají zdrojem problémů. Nejmenší bude asi ten, že vkládání bude zbytečně pomalé.
    23.11.2011 13:04 Peter
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Nie - nie je to používané na kľúče (ID) ale na čísla faktúr. Keďže podľa nového zákona musíš na bločku z pokladne písať aj číslo faktúry, tak musím vyrábať faktúry pred uzavretím výdajky (číže mi nestačí robiť po uzavretí MAX(CisloFaktury)+1) a tým pádom keď bude tovar odmietnutý a faktúra vymazaná, tak potrebujem metódu číslovania ktorá bude automaticky zapĺňať medzery v číslovaní. Dúfam, že som sa vykoktal zrozumiteľne a chápeš čo som tým chcel povedať.
    23.11.2011 13:46 kuka
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    V takovem pripade bych si ruseni jen poznamenal, napr. priznakem "smazano", a pak nasel volne cislo napr. "select min(cislo) where smazano = 1". S indexem to bude nalezeno okamzite, navic je mozne takove zaznamy treba zamykat. Obecne databaze efektivneji hledaji to, co existuje a ma nejake vlastnosti, nez to, co nekde vuci nejake externi logice schazi.
    23.11.2011 14:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Tohle vám ale nezaručí, že se podaří mezeru vyplnit. Logičtější a podle mne správnější by bylo fakturu vytvořit a pokud příjemce zboží odmítne, vzápětí ji stornovat. Ono to, že se v účetnictví nic nemaže, ale pokud je něco nutné vrátit zpět, udělá se inverzní akce (třeba to storno), má své důvody.
    xkucf03 avatar 25.11.2011 19:36 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Faktura se smaže? A co ten zákazník, který si ji odnesl vytištěnou (nebo ji dostal e-mailem)? Pak existují na světě dvě faktury („smazaná“ + nová, která „zaplnila díru“) se stejným číslem od stejného subjektu (tebe). To není dobré…

    Nebo tu fakturu smažeš ještě před tím, než ji vytiskneš/odešleš? Pak to smazání není až takový problém. Akorát si zbytečně přiděláváš práci. Proč jednoduše nevygeneruješ číslo až těsně před tiskem/odesláním? Na to ti stačí obyčejná sekvence (v MySQL to je trochu složitější, ale obecně je to velmi jednoduchý a používaný nástroj)
    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
    26.11.2011 03:18 jekub
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Proč jednoduše nevygeneruješ číslo až těsně před tiskem/odesláním

    díky, další do sbírky ;-)
    23.11.2011 12:58 Peter
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    Takze vysledok je nasledovny:
    UPDATE Vydajka SET CisloFaktury=
      (
        SELECT VolneCislo FROM
          (
            SELECT CisloFaktury+1 AS VolneCislo FROM Vydajka WHERE CisloFaktury+1 NOT IN
              (
                SELECT CisloFaktury FROM Vydajka
              )
            ORDER BY CisloFaktury ASC LIMIT 1
          )
        AS Temporary
      )
    WHERE ID=xxx;
    
    Ten úvodný select tam musí byť, lebo databáza nemôže vykonávať select nad upravovanou tabuľkou, takže vytvoríme záložnú.

    Veľmi pekne ďakujem za pomoc.
    30.11.2011 14:27 depka | skóre: 20 | blog: eterity
    Rozbalit Rozbalit vše Re: MySQL - nájdi prvé voľné číslo v číselnej postupnosti
    jde to i bez poddotazu
    select 
        cislo 
    from tabulka prvni
    left join tabulka druha on druha.cislo = prvni.cislo + 1
    where druha.cislo is null
    order by prvni.cislo desc

    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.