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 20:44 | Komunita

    Sovereign Tech Agency (Wikipedie), tj. agentura zabezpečující financování svobodného a otevřeného softwaru německou vládou, podpoří GFortran částkou 360 000 eur.

    Ladislav Hagara | Komentářů: 0
    včera 14:00 | IT novinky

    Microsoft hodlá zrušit zhruba tři procenta pracovních míst. Microsoft na konci loňského června zaměstnával kolem 228.000 lidí. Tři procenta z tohoto počtu představují téměř 7000 pracovních míst.

    Ladislav Hagara | Komentářů: 6
    včera 13:33 | IT novinky

    V říjnu loňského roku provedl Úřad pro ochranu hospodářské soutěže (ÚOHS) místní šetření u společnosti Seznam.cz. Krajský soud v Brně tento týden konstatoval, že toto šetření bylo nezákonné.

    Ladislav Hagara | Komentářů: 6
    13.5. 22:22 | Bezpečnostní upozornění

    Branch Privilege Injection (CVE-2024-45332, Paper) je nejnovější bezpečnostní problém procesorů Intel. Intel jej řeší ve včerejším opravném vydání 20250512 mikrokódů pro své procesory. Neprivilegovaný uživatel si například může přečíst /etc/shadow (YouTube).

    Ladislav Hagara | Komentářů: 2
    13.5. 14:22 | Komunita

    Dle plánu byl vývoj Firefoxu přesunut z Mercurialu na Git. Oficiální repozitář se zdrojovými kódy je na GitHubu.

    Ladislav Hagara | Komentářů: 7
    13.5. 04:33 | Bezpečnostní upozornění

    V terminálovém multiplexoru GNU Screen byly nalezeny a v upstreamu ve verzi 5.0.1 už opraveny bezpečnostních chyby CVE-2025-23395, CVE-2025-46802, CVE-2025-46803, CVE-2025-46804 a CVE-2025-46805. Podrobnosti na blogu SUSE Security Teamu.

    Ladislav Hagara | Komentářů: 41
    12.5. 19:33 | Bezpečnostní upozornění

    Training Solo (Paper, GitHub) je nejnovější bezpečnostní problém procesorů Intel s eIBRS a některých procesorů ARM. Intel vydal opravnou verzi 20250512 mikrokódů pro své procesory.

    Ladislav Hagara | Komentářů: 0
    12.5. 11:44 | Nová verze

    Byla vydána nová verze 25.05.11 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Nejnovější Shotcut je již vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

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

    Svobodný elektronický platební systém GNU Taler (Wikipedie, cgit) byl vydán ve verzi 1.0. GNU Taler chrání soukromí plátců a zároveň zajišťuje, aby byl příjem viditelný pro úřady. S vydáním verze 1.0 byl systém spuštěn ve Švýcarsku.

    Ladislav Hagara | Komentářů: 10
    12.5. 00:55 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL

    … více »
    Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (0%)
     (3%)
    Celkem 611 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    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.