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 16:00 | Nová verze

Byl vydán Mozilla Firefox 51.0. Z novinek lze upozornit například na upozorňování na přihlašování přes nešifrované spojení (HTTP), podporu pro přehrávání bezeztrátového formátu FLAC nebo podporu WebGL 2. Podrobné informace v poznámkách k vydání a na stránce věnované vývojářům. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
včera 17:25 | IT novinky

Do prodeje (Farnell) se dostal jednodeskový počítač Tinker Board (unboxing). Jedná se o konkurenci Raspberry Pi 3 od společnosti Asus. Porovnání (jpg) těchto počítačů například na CNXSoft. Cena Tinker Boardu je 55 £.

Ladislav Hagara | Komentářů: 13
včera 14:44 | Zajímavý projekt

Byla zveřejněna pravidla hackerské soutěže Pwn2Own 2017, jež proběhne od 15. do 17. března v rámci bezpečnostní konference CanSecWes ve Vancouveru. Soutěžit se bude o více než milion dolarů v pěti kategoriích. Letos se bude útočit i na Ubuntu. Jedná se již o 10. ročník této soutěže.

Ladislav Hagara | Komentářů: 2
včera 13:33 | Nová verze

Po sedmi měsících vývoje od vydání verze 5.7 byla vydána verze 5.8 (YouTube) toolkitu Qt. Z novinek lze zmínit například Qt Lite pro vestavěná zařízení. Nově jsou plně podporovány moduly Qt Wayland Compositor (YouTube) a Qt SCXML (YouTube). Současně byla vydána verze 4.2.1 integrovaného vývojového prostředí (IDE) Qt Creator.

Ladislav Hagara | Komentářů: 1
včera 11:52 | Pozvánky

Lednový Prague Containers Meetup se koná ve čtvrtek 26. ledna 2017 od 18:00 v Apiary, Pernerova 49, Praha 8. Přijďte se podívat na přednášky o Enterprise Kubernetes a Jenkins as a code.

little-drunk-jesus | Komentářů: 0
včera 11:40 | Pozvánky

Program letošního ročníku konference Prague PostgreSQL Developer Days, která se koná již 15. a 16. února 2017 na ČVUT FIT, Thákurova 9, Praha 6, byl dnes zveřejněn. Najdete ho na stránkách konference včetně anotací přednášek a školení. Registrace na konferenci bude otevřena zítra (24. ledna) v brzkých odpoledních hodinách.

TomasVondra | Komentářů: 0
22.1. 02:20 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu, upozorňuje na svém blogu, že nový Inkscape 0.92 rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Problém by měl být vyřešen v Inkscape 0.92.2 [reddit].

Ladislav Hagara | Komentářů: 0
22.1. 02:02 | Komunita

Øyvind Kolås, hlavní vývojář grafických knihoven GEGL a babl, které využívá grafický program GIMP, žádá o podporu na Patreonu. Díky ní bude moci pracovat na vývoji na plný úvazek. Milník 1000 $, který by stačil na holé přežití, se již téměř podařilo vybrat, dalším cílem je dosažení 2500 $, které mu umožní běžně fungovat ve společnosti.

xkomczax | Komentářů: 12
21.1. 23:54 | Pozvánky

DevConf.cz 2017, již devátý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě, proběhne od pátku 27. ledna do neděle 29. ledna v prostorách Fakulty informačních technologií Vysokého učení technického v Brně. Na programu je celá řada zajímavých přednášek a workshopů. Letos je povinná registrace.

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

Byla vydána verze 1.0.0 emulátoru terminálu Terminology postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (12%)
 (2%)
 (72%)
 (3%)
 (11%)
Celkem 393 hlasů
 Komentářů: 37, poslední dnes 12:21
Rozcestník
Reklama

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: 935×
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: 66 | 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: 45 | 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-Výuka.cz, Nekuřák.net
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.