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í
×
    17.5. 13:44 | Nová verze

    Byla vydána (𝕏) nová major verze 17 softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech GitLab (Wikipedie). Představení nových vlastností i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    17.5. 12:22 | Komunita

    Sovereign Tech Fund, tj. program financování otevřeného softwaru německým ministerstvem hospodářství a ochrany klimatu, podpoří vývoj FFmpeg částkou 157 580 eur. V listopadu loňského roku podpořil GNOME částkou 1 milion eur.

    Ladislav Hagara | Komentářů: 0
    17.5. 01:55 | Komunita

    24. září 2024 budou zveřejněny zdrojové kódy přehrávače Winamp.

    Ladislav Hagara | Komentářů: 10
    16.5. 23:33 | Nová verze

    Google Chrome 125 byl prohlášen za stabilní. Nejnovější stabilní verze 125.0.6422.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 9 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 1
    16.5. 21:11 | Nová verze

    Textový editor Neovim byl vydán ve verzi 0.10 (𝕏). Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    16.5. 20:55 | Nová verze

    Byla vydána nová verze 6.3 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.15.

    Ladislav Hagara | Komentářů: 0
    16.5. 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 9
    16.5. 13:22 | Nová verze

    JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    16.5. 12:22 | Pozvánky

    Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 0
    16.5. 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 9
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (77%)
     (5%)
     (10%)
     (8%)
    Celkem 348 hlasů
     Komentářů: 16, poslední 14.5. 11: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: 1000×
    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.