abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 00:11 | Nová verze

    Po osmi měsících vývoje byla vydána nová verze 0.12.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 268 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 23:55 | Pozvánky

    Poslední měsíc byl plný zajímavých akcí, o kterých Vám bastlíři z projektu MacGyver mohou povědět, protože se na ně sami vydali. Kde všude byli, ptáte se? Objevili se na Installfestu, Arduino Day, Hackaday Europe a tajném srazu bastlířů z Twitteru. A z každé akce pro vás mají zajímavé poznatky.

    … více »
    bkralik | Komentářů: 0
    včera 11:44 | IT novinky

    Mezinárodní nezisková organizace Women Who Code (WWCode, Wikipedie) založena v roce 2011 s cílem usnadnit ženám vstup do světa informačních technologií nečekaně skončila. Došly finance.

    Ladislav Hagara | Komentářů: 7
    19.4. 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 1
    19.4. 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 6
    19.4. 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    19.4. 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    18.4. 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    18.4. 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 4
    18.4. 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 19
    KDE Plasma 6
     (67%)
     (11%)
     (2%)
     (20%)
    Celkem 575 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    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: 999×
    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.