SQL

Comments (...)

SQL - Ověření použití pole v tabulce - příklad

 

  SELECT

Barva

  FROM

  HR__Z201

  WHERE

Barva

  IS NOT NULL

  ORDER BY

Barva

  DESC

 

 

 

2014.01.09a / 00:00

 

002) Upraveny TimeOut u SQL dotazů

 

 

 

2013.12.19a / 12:00

 

003) Příklad SQL pro analýzu tabulky QueryLog - řazeno od nejpomalejších SQL dotazů

 

    SELECT

       *

    FROM

    (

    SELECT

       StartTime,

       EndTime,

       ROUND((CAST(EndTime AS EXTENDED)-CAST(StartTime AS EXTENDED))*24.0*3600.0*1000.0) AS ms,

       TimeOut,

       Finished,

       AliasName,

       ErrorCode,

       ErrorString,

       Query

    FROM

       QueryLog

    ) AS x

    WHERE

       (ms > 32)

    ORDER BY

       ms Desc

 

004) Příklad SQL pro analýzu tabulky QueryLog - SQL dotazy týkající se K1

 

    SELECT

       StartTime,

       EndTime,

       ROUND((CAST(EndTime AS EXTENDED)-CAST(StartTime AS EXTENDED))*24.0*3600.0*1000.0) AS ms,

       TimeOut,

       Finished,

       AliasName,

       ErrorCode,

       ErrorString,

       Query

    FROM

       QueryLog

    WHERE

       (Query LIKE '%K1%')

 

 

 

2008.02.21a / 00:00

 

001) SQL

 

    - upraveno pro spouštění libovolně dlouhých SQL dotazů

 

 

 

2007.07.08a / 21:00

 

001) Úprava poddotazů pro NexusDB verze 2.07.01

 

    - od verze 2.07.01 NexusDB je nutné pro každý poddotaz použít alias:

 

      Př.:

 

       SELECT ... FROM 

       (

          SELECT ...

       ) alias;

 

      kde alias je jméno aliasu, např.: X

 

 

 

2007.01.09a / 08:00

 

001) SQL

 

    - zvýšen maximální TimeOut z 15-ti minut na 24 hodin

 

 

 

2000.03.12b / 21:00

 

02) Poznamky k zadavani SQL dotazu:

 

   - v casti ORDER BY mohou byt uvedena pouze pole, ktera jsou uvedena

     v casti SELECT (v casti WHERE libovolna)

 

     ---> pro spravne formatovane trideni cisel musi byt v casti

          SELECT uvedeno i MISTRIDCISLO(..)

 

 

 

Úvod do jazyka SQL

 

SQL = Structured Query Language - databázový jazyk. Vznikl kolem roku 1975, firma IBM.

 

SW manas umožňuje použití jazyka SQL na 2 úrovních.

 

Na 1. úrovni jsou to SQL dotazy nad tabulkami FF2 serveru, které vrací množinu vět dle omezení. Na tuto množinu vět je možné použít 2. úroveň - xSQL dotazy, které mohou výběr vět dále zúžit a doplnit do vybraných vět údaje z jiných tabulek (např. k číslu zboží jeho název) a vyhnout se tak časově velmi pomalým spojováním tabulek. SQL dotaz je prováděn na straně serveru, xSQL dotaz na straně klienta. Součástí xSQL dotazu jsou uživatelsky definované funkce - v současné době již pres 120 funkcí, které nejsou součástí jazyka SQL. Další funkce je možné podle potřeby doplňovat.

 

Od jiných klient/serverových aplikací se SW manas mimo možnost použití SQL dotazů jak na straně serveru tak na straně klienta liší dále tím, že je možné

v kombinovaném SQL dotazu pomocí pracovní tabulky v paměti sloučit výsledky více SQL dotazů a nad vysledkem potom vykonat xSQL dotaz.

 

Př.:

 

- sloučení dat za partnera za několik měsíců a za několik typů dokladů

- sloučení dat za všechny pokladny v měsíci

 

Výsledkem SQL dotazů jsou 3 tabulky, které je možné procházet a data v nich je možné exportovat do většiny používaných datových formátů (TXT, DOC, XLS, HTM, PDF (bez diakritiky), ...). Další možností výstupu dat je tisk pomocí 2 generátorů reportů (je možné doplnit obrázky, čárkové kódy, ...).

 

Toto řešení je zcela univerzální a svými možnostmi předčí řešení v podstatně dražších informačních systémech.

 

Kombinované SQL dotazy

 

Kombinace SQL dotazu na straně serveru (SQL) a na straně klienta (xSQL) s využitím paměťové tabulky pro shromažďování výstupů SQL dotazu na straně serveru.

 

V záložce scénář lze použít:

 

//

... poznámka

;

... poznámka

prázdný řádek

... oddělení

 

ME zpráva

... zobrazení zprávy + pípnutí

 

B1X název parametru 1

... vyžádá si zadání parametru 1 v okně, má přednost před jinak zadaným parametrum 1

B2X název parametru 2

... vyžádá si zadání parametru 2 v okně, má přednost před jinak zadaným parametrum 2

B3X název parametru 3

... vyžádá si zadání parametru 3 v okně, má přednost před jinak zadaným parametrum 3

B4X název parametru 4

... vyžádá si zadání parametru 4 v okně, má přednost před jinak zadaným parametrum 4

B5X název parametru 5

... vyžádá si zadání parametru 5 v okně, má přednost před jinak zadaným parametrum 5

B6X název parametru 6

... vyžádá si zadání parametru 6 v okně, má přednost před jinak zadaným parametrum 6

B7X název parametru 7

... vyžádá si zadání parametru 7 v okně, má přednost před jinak zadaným parametrum 7

B8X název parametru 8

... vyžádá si zadání parametru 8 v okně, má přednost před jinak zadaným parametrum 8

 

    kde X je  A ... parametr bude zadán výběrem agendy

              B

              C ... parametr bude zadán na kalkulačce

              D ... parametr bude zadán výběrem v kalendáři

                    - postupně mohou být až 4 výběry v kalendáři

                    - k formátovanému datumu je přístup pomocí parametrů ~Axxx až ~Lxxx

              E ... parametr bude zadán v editovacím poli

              F

              G

              H

              I

              J

              K

              L

              M

              N

              O

              P

              Q

              R

              S ... parametr bude zadán výběrem agendy skladu

              T ... parametr bude zadán výběrem střediska

              U

              V

              W

              X

              Y

              Z

 

F1

... sestava z tabulky 1 pomocí generátoru sestav 1

F2

... sestava z tabulky 2 pomocí generátoru sestav 1

 

M1 ... ukončení skriptu, pokud je paměťová tabulka prázdná

 

MA

... následná vložení výsledku tabulky 1 do paměťové tabulky

MC

... inicializace paměťové tabulky

MI

... prvotní vložení výsledku tabulky 1 do paměťové tabulky - včetně struktury tabulky

 

N1 název sestavy

... definice názvu sestavy

N2 podnázev sestavy

... definice podnázvu sestavy

 

N3 název

... název SQL dotazu - zobrazen v okně parametrizace

 

P1 parametr1

... definice parametru 1, nahradí '~1'

P2 parametr2

... definice parametru 2, nahradí '~2'

P3 parametr3

... definice parametru 3, nahradí '~3'

P4 parametr4

... definice parametru 4, nahradí '~4'

P5 parametr5

... definice parametru 5, nahradí '~5'

P6 parametr6

... definice parametru 6, nahradí '~6'

P7 parametr7

... definice parametru 7, nahradí '~7'

P8 parametr8

... definice parametru 8, nahradí '~8'

 

Q1 jméno tabulky FF2

... v SQL1 dotazu dosadí za '@' jméno tabulky a provede SQL1 dotaz

31 jméno tabulky FF2

... v SQL11 dotazu dosadí za '@' jméno tabulky a provede SQL11 dotaz

32 jméno tabulky FF2

... v SQL12 dotazu dosadí za '@' jméno tabulky a provede SQL12 dotaz

 

QA jméno tabulky FF2

... v SQL1 dotazu dosadí za '@' jméno tabulky a provede SQL1 dotaz

    výsledek z tabulky 1 připojí do paměťové tabulky,

    inicializace paměťové tabulky je provedena automaticky

41 jméno tabulky FF2

... v SQL11 dotazu dosadí za '@' jméno tabulky a provede SQL11 dotaz

    výsledek z tabulky 1 připojí do paměťové tabulky,

    inicializace paměťové tabulky je provedena automaticky

42 jméno tabulky FF2

... v SQL12 dotazu dosadí za '@' jméno tabulky a provede SQL12 dotaz

    výsledek z tabulky 1 připojí do paměťové tabulky,

    inicializace paměťové tabulky je provedena automaticky

 

QI jméno tabulky FF2

... v SQL1 dotazu dosadí za '@' jméno tabulky a provede SQL1 dotaz,

    výsledek přesune z tabulky 1 do inicializované paměťové tabulky

51 jméno tabulky FF2

... v SQL11 dotazu dosadí za '@' jméno tabulky a provede SQL11 dotaz,

    výsledek přesune z tabulky 1 do inicializované paměťové tabulky

52 jméno tabulky FF2

... v SQL12 dotazu dosadí za '@' jméno tabulky a provede SQL12 dotaz,

    výsledek přesune z tabulky 1 do inicializované paměťové tabulky

 

R1

... sestava z tabulky 1 pomocí generátoru sestav 2

R2

... sestava z tabulky 2 pomocí generátoru sestav 2

 

S1 definice SQL1

... definice a spuštění SQL1 dotazu

11 definice SQL12

... definice a spuštění SQL11 dotazu

12 definice SQL12

... definice a spuštění SQL12 dotazu

 

S2 definice SQL2

... definice a spuštění SQL2 dotazu

21 definice SQL21

... definice a spuštění SQL21 dotazu

22 definice SQL22

... definice a spuštění SQL22 dotazu

 

SQL1

... provedení SQL1 dotazu - na straně serveru, výsledek v tabulce 1

SQL11

... provedení SQL11 dotazu - na straně serveru, výsledek v tabulce 1

SQL12

... provedení SQL12 dotazu - na straně serveru, výsledek v tabulce 1

 

SQL2

... provedení SQL2 dotazu - na straně klienta, výsledek v tabulce 2

SQL21

... provedení SQL21 dotazu - na straně klienta, výsledek v tabulce 2

SQL22

... provedení SQL22 dotazu - na straně klienta, výsledek v tabulce 2

 

Parametrizace

 

~1

... bude nahrazeno parametrem 1

~2

... bude nahrazeno parametrem 2

~3

... bude nahrazeno parametrem 3

~4

... bude nahrazeno parametrem 4

~5

... bude nahrazeno parametrem 5

~6

... bude nahrazeno parametrem 6

~7

... bude nahrazeno parametrem 7

~8

... bude nahrazeno parametrem 8

 

~A000 ... poslední zadaný datum funkce

~B000 ... poslední zadaný datum + dny RRRR-MM-DD

~C000 ... poslední zadaný datum - dny RRRR-MM-DD

 

~D000 ... -1 zadaný datum funkce

~E000 ... -1 zadaný datum + dny RRRR-MM-DD

~F000 ... -1 zadaný datum - dny RRRR-MM-DD

 

~G000 ... -2 zadaný datum funkce

~H000 ... -2 zadaný datum + dny RRRR-MM-DD

~I000 ... -2 zadaný datum - dny RRRR-MM-DD

 

~J000 ... -3 zadaný datum funkce

~K000 ... -3 zadaný datum + dny RRRR-MM-DD

~L000 ... -3 zadaný datum - dny RRRR-MM-DD

 

        funkce

 

        901 - RRRR-MM-DD

        902 - RRRR-MM-DD + 1 den

 

        001 - r

        002 - m

        003 - rm

 

        011 - TT

 

        021 - DD

        022 - MM

        023 - RR

        024 - RRRR

 

        031 - DD

        032 - DD.MM

        033 - DD.MM.RR

        034 - DD.MM.RRRR

        035 - DDMM

        036 - DDMMRR

        037 - DDMMRRRR

 

        041 - MM.DD

        042 - MM.RR

        043 - MM.RRRR

        044 - MMDD

        045 - MMRR

        046 - MMRRRR

 

        051 - RR.MM

        052 - RR.MM.DD

        053 - RRRR.MM

        054 - RRRR.MM.DD

        055 - RRMM

        056 - RRMMDD

        057 - RRRRMM

        058 - RRRRMMDD

 

        RRRR-MM-DD

 

        101 - 1. den aktuálního roku

        102 - poslední den aktuálního roku

        103 - 1. den následujícího roku

        104 - poslední den následujícího roku

        105 - 1. den předcházejícího roku

        106 - poslední den předcházejícího roku

 

        111 - 1. den aktuálního pololetí

        112 - poslední den aktuálního pololetí

        113 - 1. den následujícího pololetí

        114 - poslední den následujícího pololetí

        115 - 1. den předcházejícího pololetí

        116 - poslední den předcházejícího pololetí

        117 - 1. den 1. pololetí

        118 - poslední den 1. pololetí

        119 - 1. den 2. pololetí

        120 - poslední den 2. pololetí

 

        131 - 1. den aktuálního čtvrtletí

        132 - poslední den aktuálního čtvrtletí

        133 - 1. den následujícího čtvrtletí

        134 - poslední den následujícího čtvrtletí

        135 - 1. den předcházejícího čtvrtletí

        136 - poslední den předcházejícího čtvrtletí

        137 - 1. den 1. čtvrtletí

        138 - poslední den 1. čtvrtletí

        139 - 1. den 2. čtvrtletí

        140 - poslední den 2. čtvrtletí

        141 - 1. den 3. čtvrtletí

        142 - poslední den 3. čtvrtletí

        143 - 1. den 4. čtvrtletí

        144 - poslední den 4. čtvrtletí

 

        201 - 1. den aktuálního měsíce

        202 - poslední den aktuálního měsíce

        203 - 1. den následujícího měsíce

        204 - poslední den následujícího měsíce

        205 - 1. den předcházejícího měsíce

        206 - poslední den předcházejícího měsíce

        207 - 1. den 1. měsíce

        208 - poslední den 1. měsíce

        209 - 1. den 2. měsíce

        210 - poslední den 2. měsíce

        211 - 1. den 3. měsíce

        212 - poslední den 3. měsíce

        213 - 1. den 4. měsíce

        214 - poslední den 4. měsíce

        215 - 1. den 5. měsíce

        216 - poslední den 5. měsíce

        217 - 1. den 6. měsíce

        218 - poslední den 6. měsíce

        219 - 1. den 7. měsíce

        220 - poslední den 7. měsíce

        221 - 1. den 8. měsíce

        222 - poslední den 8. měsíce

        223 - 1. den 9. měsíce

        224 - poslední den 9. měsíce

        225 - 1. den 10. měsíce

        226 - poslední den 10. měsíce

        227 - 1. den 11. měsíce

        228 - poslední den 11. měsíce

        229 - 1. den 12. měsíce

        230 - poslední den 12. měsíce

 

        301 - 1. den aktuální dekády

        302 - poslední den aktuální dekády

        303 - 1. den následující dekády

        304 - poslední den následující dekády

        305 - 1. den předcházející dekády

        306 - poslední den předcházející dekády

        307 - 1. den 1. dekády v měsíci

        308 - poslední den 1. dekády v měsíci

        309 - 1. den 2. dekády v měsíci

        310 - poslední den 2. dekády v měsíci

        311 - 1. den 3. dekády v měsíci

        312 - poslední den 3. dekády v měsíci

        313 - 1. den 1. dekády v        1. měsíci

        314 - poslední den 1. dekády v  1. měsíci

        315 - 1. den 2. dekády v        1. měsíci

        316 - poslední den 2. dekády v  1. měsíci

        317 - 1. den 3. dekády v        1. měsíci

        318 - poslední den 3. dekády v  1. měsíci

        319 - 1. den 1. dekády v        2. měsíci

        320 - poslední den 1. dekády v  2. měsíci

        321 - 1. den 2. dekády v        2. měsíci

        322 - poslední den 2. dekády v  2. měsíci

        323 - 1. den 3. dekády v        2. měsíci

        324 - poslední den 3. dekády v  2. měsíci

        325 - 1. den 1. dekády v        3. měsíci

        326 - poslední den 1. dekády v  3. měsíci

        327 - 1. den 2. dekády v        3. měsíci

        328 - poslední den 2. dekády v  3. měsíci

        329 - 1. den 3. dekády v        3. měsíci

        330 - poslední den 3. dekády v  3. měsíci

        331 - 1. den 1. dekády v        4. měsíci

        332 - poslední den 1. dekády v  4. měsíci

        333 - 1. den 2. dekády v        4. měsíci

        334 - poslední den 2. dekády v  4. měsíci

        335 - 1. den 3. dekády v        4. měsíci

        336 - poslední den 3. dekády v  4. měsíci

        337 - 1. den 1. dekády v        5. měsíci

        338 - poslední den 1. dekády v  5. měsíci

        339 - 1. den 2. dekády v        5. měsíci

        340 - poslední den 2. dekády v  5. měsíci

        341 - 1. den 3. dekády v        5. měsíci

        342 - poslední den 3. dekády v  5. měsíci

        343 - 1. den 1. dekády v        6. měsíci

        344 - poslední den 1. dekády v  6. měsíci

        345 - 1. den 2. dekády v        6. měsíci

        346 - poslední den 2. dekády v  6. měsíci

        347 - 1. den 3. dekády v        6. měsíci

        348 - poslední den 3. dekády v  6. měsíci

        349 - 1. den 1. dekády v        7. měsíci

        350 - poslední den 1. dekády v  7. měsíci

        351 - 1. den 2. dekády v        7. měsíci

        352 - poslední den 2. dekády v  7. měsíci

        353 - 1. den 3. dekády v        7. měsíci

        354 - poslední den 3. dekády v  7. měsíci

        355 - 1. den 1. dekády v        8. měsíci

        356 - poslední den 1. dekády v  8. měsíci

        357 - 1. den 2. dekády v        8. měsíci

        358 - poslední den 2. dekády v  8. měsíci

        359 - 1. den 3. dekády v        8. měsíci

        360 - poslední den 3. dekády v  8. měsíci

        361 - 1. den 1. dekády v        9. měsíci

        362 - poslední den 1. dekády v  9. měsíci

        363 - 1. den 2. dekády v        9. měsíci

        364 - poslední den 2. dekády v  9. měsíci

        365 - 1. den 3. dekády v        9. měsíci

        366 - poslední den 3. dekády v  9. měsíci

        367 - 1. den 1. dekády v       10. měsíci

        368 - poslední den 1. dekády v 10. měsíci

        369 - 1. den 2. dekády v       10. měsíci

        370 - poslední den 2. dekády v 10. měsíci

        371 - 1. den 3. dekády v       10. měsíci

        372 - poslední den 3. dekády v 10. měsíci

        373 - 1. den 1. dekády v       11. měsíci

        374 - poslední den 1. dekády v 11. měsíci

        375 - 1. den 2. dekády v       11. měsíci

        376 - poslední den 2. dekády v 11. měsíci

        377 - 1. den 3. dekády v       11. měsíci

        378 - poslední den 3. dekády v 11. měsíci

        379 - 1. den 1. dekády v       12. měsíci

        380 - poslední den 1. dekády v 12. měsíci

        381 - 1. den 2. dekády v       12. měsíci

        382 - poslední den 2. dekády v 12. měsíci

        383 - 1. den 3. dekády v       12. měsíci

        384 - poslední den 3. dekády v 12. měsíci

 

        401 - 1. den aktuálního týdne

        402 - poslední den aktuálního týdne

        403 - 1. den následujícího týdne

        404 - poslední den následujícího týdne

        405 - 1. den předcházejícího týdne

        406 - poslední den předcházejícího týdne

        407 - 1. den        1. týdne

        408 - poslední den  1. týdne

        409 - 1. den        2. týdne

        410 - poslední den  2. týdne

        411 - 1. den        3. týdne

        412 - poslední den  3. týdne

        413 - 1. den        4. týdne

        414 - poslední den  4. týdne

        415 - 1. den        5. týdne

        416 - poslední den  5. týdne

        417 - 1. den        6. týdne

        418 - poslední den  6. týdne

        419 - 1. den        7. týdne

        420 - poslední den  7. týdne

        421 - 1. den        8. týdne

        422 - poslední den  8. týdne

        423 - 1. den        9. týdne

        424 - poslední den  9. týdne

        425 - 1. den       10. týdne

        426 - poslední den 10. týdne

        427 - 1. den       11. týdne

        428 - poslední den 11. týdne

        429 - 1. den       12. týdne

        430 - poslední den 12. týdne

        431 - 1. den       13. týdne

        432 - poslední den 13. týdne

        433 - 1. den       14. týdne

        434 - poslední den 14. týdne

        435 - 1. den       15. týdne

        436 - poslední den 15. týdne

        437 - 1. den       16. týdne

        438 - poslední den 16. týdne

        439 - 1. den       17. týdne

        440 - poslední den 17. týdne

        441 - 1. den       18. týdne

        442 - poslední den 18. týdne

        443 - 1. den       19. týdne

        444 - poslední den 19. týdne

        445 - 1. den       20. týdne

        446 - poslední den 20. týdne

        447 - 1. den       21. týdne

        448 - poslední den 21. týdne

        449 - 1. den       22. týdne

        450 - poslední den 22. týdne

        451 - 1. den       23. týdne

        452 - poslední den 23. týdne

        453 - 1. den       24. týdne

        454 - poslední den 24. týdne

        455 - 1. den       25. týdne

        456 - poslední den 25. týdne

        457 - 1. den       26. týdne

        458 - poslední den 26. týdne

        459 - 1. den       27. týdne

        460 - poslední den 27. týdne

        461 - 1. den       28. týdne

        462 - poslední den 28. týdne

        463 - 1. den       29. týdne

        464 - poslední den 29. týdne

        465 - 1. den       30. týdne

        466 - poslední den 30. týdne

        467 - 1. den       31. týdne

        468 - poslední den 31. týdne

        469 - 1. den       32. týdne

        470 - poslední den 32. týdne

        471 - 1. den       33. týdne

        472 - poslední den 33. týdne

        473 - 1. den       34. týdne

        474 - poslední den 34. týdne

        475 - 1. den       35. týdne

        476 - poslední den 35. týdne

        477 - 1. den       36. týdne

        478 - poslední den 36. týdne

        479 - 1. den       37. týdne

        480 - poslední den 37. týdne

        481 - 1. den       38. týdne

        482 - poslední den 38. týdne

        483 - 1. den       39. týdne

        484 - poslední den 39. týdne

        485 - 1. den       40. týdne

        486 - poslední den 40. týdne

        487 - 1. den       41. týdne

        488 - poslední den 41. týdne

        489 - 1. den       42. týdne

        490 - poslední den 42. týdne

        491 - 1. den       43. týdne

        492 - poslední den 43. týdne

        493 - 1. den       44. týdne

        494 - poslední den 44. týdne

        495 - 1. den       45. týdne

        496 - poslední den 45. týdne

        497 - 1. den       46. týdne

        498 - poslední den 46. týdne

        499 - 1. den       47. týdne

        500 - poslední den 47. týdne

        501 - 1. den       48. týdne

        502 - poslední den 48. týdne

        503 - 1. den       49. týdne

        504 - poslední den 49. týdne

        505 - 1. den       50. týdne

        506 - poslední den 50. týdne

        507 - 1. den       51. týdne

        508 - poslední den 51. týdne

        509 - 1. den       52. týdne

        510 - poslední den 52. týdne

        511 - 1. den       53. týdne

        512 - poslední den 53. týdne

        513 - 1. den       54. týdne

        514 - poslední den 54. týdne

 

        601 - počet dní v 1. měsíci

        602 - počet dní v 2. měsíci

        603 - počet dní v 3. měsíci

        604 - počet dní v 4. měsíci

        605 - počet dní v 5. měsíci

        606 - počet dní v 6. měsíci

        607 - počet dní v 7. měsíci

        608 - počet dní v 8. měsíci

        609 - počet dní v 9. měsíci

        610 - počet dní v 10. měsíci

        611 - počet dní v 11. měsíci

        612 - počet dní v 12. měsíci

 

        621 - počet dní v aktuální 3 dekádě

 

        631 - počet dní v 3 dekádě v 1 měsíci

        632 - počet dní v 3 dekádě v 2 měsíci

        633 - počet dní v 3 dekádě v 3 měsíci

        634 - počet dní v 3 dekádě v 4 měsíci

        635 - počet dní v 3 dekádě v 5 měsíci

        636 - počet dní v 3 dekádě v 6 měsíci

        637 - počet dní v 3 dekádě v 7 měsíci

        638 - počet dní v 3 dekádě v 8 měsíci

        639 - počet dní v 3 dekádě v 9 měsíci

        640 - počet dní v 3 dekádě v 10 měsíci

        641 - počet dní v 3 dekádě v 11 měsíci

        642 - počet dní v 3 dekádě v 12 měsíci

 

        651 - počet týdnů

        652 - počet dní v 1. týdnu

        653 - počet dní v posledním týdnu

 

        661 - pořadové číslo dne v roce

        662 - do konce roku zbývá dní

 

@

... v SQL1 dotazu znamená místo pro vložení jména konkrétní tabulky definované v Q1 / QA / QI

 

`AA

... bude nahrazeno agendou - např. XX

 

`AM

... bude nahrazeno agendou + aktuálním rokem + aktuálním měsícem

    např. XX21 - pro agendu XX, rok 2002, měsíc leden

 

`AR

... bude nahrazeno agendou + aktuálním rokem

    např. XX2 - pro agendu XX, rok 2002

 

`AS

... bude nahrazeno agendou skladu - např. XX

 

`D0

... datum zpracování ve tvaru RRRRMMDD

 

`D1

... datum zpracování ve tvaru RRMMDD

 

`D2

... datum zpracování ve tvaru RRRR

 

`D3

... datum zpracování ve tvaru RR

 

`D4

... datum zpracování ve tvaru MM

 

`D5

... datum zpracování ve tvaru DD

 

`D6

... datum zpracování ve tvaru RRRR-MM-DD

 

`DM

... datum zpracování ve tvaru rm - kód roku + měsíce

 

`DR

... datum zpracování ve tvaru r - kód roku

 

`SM

... bude nahrazeno agendou skladu + aktuálním rokem + aktuálním měsícem

    např. XX21 - pro agendu skladu XX, rok 2002, měsíc leden

 

`SR

... bude nahrazeno agendou skladu + aktuálním rokem

    např. XX2 - pro agendu skladu XX, rok 2002

 

FF2 - popis SQL

 

{select stmt} = SELECT [ALL | DISTINCT] {selection list}

              FROM {table ref list}

              [WHERE {cond expr}]

              [GROUP BY {column list}]

              [HAVING {cond expr}]

              [ORDER BY {order list}]

 

{selection list} = {selection} [, {selection} …]

 

{selection} = * | {simple expr} [{column alias}]

 

{column list} = {column} [, {column} …]

 

{order list} = {order item} [, {order item} …]

 

{order item} = { {column} | {integer literal} } [ASC | DESC]

 

 

{insert stmt} = INSERT INTO {table name}

              { DEFAULT VALUES

              | ( {insert column list} ) {table expr}

              | {table expr}

              }

{insert column list} = {column} [, {column} ...]

 

 

{update stmt} = UPDATE {simple table ref} SET {update list}

              [ WHERE {cond expr} ]

 

{update list} = {update item} [, {update item} ...]

 

{update item} = {column name} = { DEFAULT | NULL | {simple expr} }

 

 

{delete stmt} = DELETE FROM {simple table ref} [ WHERE {cond expr} ]

 

 

{aggregate} = { COUNT( { * | [ALL | DISTINCT] {simple expr} } )

              | { MIN | MAX | SUM | AVG }

                ( [ALL | DISTINCT] {simple expr} )

            }

 

{allOrAny} = { ALL | ANY | SOME } ( {select stmt} )

 

{between} = BETWEEN {simple expr} AND {simple expr}

 

{boolean literal} = { TRUE | FALSE }

 

{case expr} = {when list} [ELSE { NULL | {simple expr} }] END

 

{coalesce expr} = ( {simple expr} [, {simple expr} …] )

 

{column} = {ident}

 

{column alias} = [AS] {column}

 

{cond expr} = {cond term} [OR {cond term}]

 

{cond factor} = [NOT] {cond primary}

 

{cond primary} = { {exists} | {unique}

                 | {simple expr}

                   [ { = | {= | { | } | }= | {} }

                     { {allOrAny} | {simple expr} }

                     | {between} | {like} | {in}

                     | {match}

                     | NOT {{between} | {like} | {in} }

                     | {isTest}

                   ]

               }

 

{cond term} = {cond factor} [AND {cond factor}]

 

{database name} = {ident}

 

{date literal} = DATE {string literal}

 

{exists} = EXISTS ( {select stmt} )

 

{factor} = [-] { ( { {cond expr} | {select stmt} } )

              | {field ref}

              | {literal}

              | {param}

              | {aggregate}

              | {scalar func}}

 

{field ref} = { {ident}

              | " { {ident} | {integer literal} }

                [{ {ident} | {integer literal} } …] " }

            [. { {ident}

               | " { {ident} | {integer literal} }

                   [{ {ident} | {integer literal} } …] "

               | * }

            ]

 

{float literal} = {digit} [{digit} …] . {digit} [{digit} …]

 

{ident} = {letter} [{ {letter} | {digit} } …]

 

{in} = IN ( { {select} | {simple expr list} } )

 

{integer literal} = {digit} [{digit} …]

 

{interval literal} = INTERVAL {string literal}

                   { YEAR | MONTH | DAY |

                     HOUR | MINUTE | SECOND }

                   [TO { YEAR | MONTH | DAY |

                         HOUR | MINUTE | SECOND }]

 

{isTest} = IS [NOT] { NULL | TRUE | FALSE | UNKNOWN }

 

{join table expr} = { CROSS JOIN {table ref}

                  | [ NATURAL ]

                    [ INNER

                    | LEFT [OUTER]

                    | RIGHT [OUTER]

                    | FULL [OUTER]

                    | UNION ]

                    JOIN

                    {simple table expr}

                    [ ON {cond expr}

                    | USING ( {using list} ) ]

                  }

 

{like} = LIKE {simple expr}

 

{literal} = { {float literal} | {integer literal}

          | {string literal} | {date literal}

          | {time literal} | {timestamp literal}

          | {interval literal} | {boolean literal} }

 

{match} = MATCH [UNIQUE] [{ PARTIAL | FULL }] ( {select stmt} )

 

{non-join table expr} = { ( {non-join table expr} )

                         | {select statement}

                         | TABLE {table ref}

                         | {table constructor}

                         }

 

{noQuote} = {any character other than single quote and end of line}

 

{param} = : {ident}

 

{scalar func} = { CASE {case expr}

                | { CHARACTER_LENGTH | CHAR_LENGTH}

                  ( {simple expr} )

                | COALESCE {coalesce expr}

                | CURRENT_DATE

                | CURRENT_TIME

                | CURRENT_TIMESTAMP

                | LOWER ( {simple expr} )

                | UPPER ( {simple expr} )

                | POSITION ( {simple expr} , {simple expr} )

                | SUBSTRING ( {simple expr} FROM

                              {simple expr}

                              [FOR {simple expr}] )

                | TRIM ( [LEADING | TRAILING | BOTH]

                         {simple expr}

                         [FROM {simple expr}] )

                | EXTRACT ( { YEAR | MONTH | DAY |

                              HOUR | MINUTE | SECOND }

                            FROM {simple expr} )

                | NULLIF ( {simple expr} , {simple expr} )

              }

 

{simple alias} = [ AS ] {alias}

 

{simple expr} = {term} [{+ | - | "||" } {term} …]

 

{simple expr list} = {simple expr} [, {simple expr} …]

 

{simple table expr} = { {simple table ref}

                    | ( {table expr} ) [ {simple alias} ]

                    }

 

{simple table ref} = [ {database name} . ] {table name} [ {simple alias} ]

 

{string literal} = ' [{  {noQuote} | '' } …] '

 

{table constructor} = VALUES ( {value list} )

 

{table expr} = { {simple table expr} {join table expr}

               [{join table expr} ...]

             | {non-join table expr}

             | ( {table expr} ) }

 

{table ref} = { {table expr} [ {simple alias} ] [ ( {insert column list} )]

            | [ {database name} . ] {table name} [ {simple alias} ]

            }

 

{table ref list} = {table ref} [, {table ref} …]

 

{term} = {factor} [{ * | / } {factor} …]

 

{time literal} = TIME {string literal}

 

{timestamp literal} = TIMESTAMP {string literal}

 

{unique} = UNIQUE ( {select stmt} )

 

{using list} = {column name} [, {column name} ...]

 

{value item} = { DEFAULT

             | {simple expr}

             }

 

{value list} = {value item} [, {value item} ...]

 

{when} = WHEN {cond expr} THEN { NULL | {simple expr} }

 

{when list} = {when} [{when} …]

 

Poznámky:

 

{} - element

[] - může být

... - může se opakovat

| - výběr 1 možnosti

{} - jedna z možností musí být použita

 

xSQL - Úvod do SQL

 

Příkaz SELECT - vyhledávání dat podle různých kritérií.

 

SELECT seznam_vystupnich_sloupcu

FROM seznam_tabulek

WHERE podminka_radku

GROUP BY seznam_vyrazu_seskupeni

HAVING podminka_skupiny

ORDER BY seznam_kriterii_trideni

 

- pouze části SELECT a FROM jsou povinné

- nezáleží na velikosti písmen

 

SELECT

- definice sloupců ve výsledku - jejich obsahu i textu v záhlaví

 

FROM

- seznam tabulek, ze kterých jsou získávány požadované informace

- tabulky jsou dostupné pomocí aliasu (Z200 - číselník zboží, ...), viz. Seznam tabulek v manas, a to

vždy aktuálně otevřené tabulky (podle datumu zpracování)

 

WHERE

- omezení zpracovávaných řádků pomocí podmínky

 

GROUP BY

- definice výrazů, podle kterých jsou řádky seskupeny

- skupina řádku se stejnými hodnotami ve všech uvedených výrazech je nahrazena jedním souhrnným řádkem

 

HAVING

- omezení souhrnných řádků definovaných pomocí GROUP BY ve výsledku

 

ORDER BY

- setřídění řádku ve výsledku postupně podle zadaných kritérií

 

Příklady

 

Výpis vybraných sloupců tabulky

 

SELECT Cislo,Nazev FROM O200

 

- vypíše seznam obalů

- seznam sloupců je oddělen čárkami

 

Modifikovaný text v záhlaví

 

SELECT Cislo AS [Cislo obalu], Nazev AS Nazev_obalu FROM O200

 

- lze použít diakritiku

- pomocí AS je možné modifikovat text v záhlaví

- pokud má text obsahovat mezery nebo jiné znaky než 'A'..'Z','a'..'z' a '_', musí být uveden v []

 

Výpis všech sloupců v tabulce

 

SELECT * FROM O200

 

Výpis modifikovaných údajů

 

SELECT "Obal:",Cislo,Nazev,ZasobaKc/1000 AS [Zasoba v tisicich] FROM O200

 

- lze uvést 'Obal:' nebo "Obal:"

- doplněná zásoba v tisících Kč

 

Modifikátor DISTINCT

 

SELECT DISTINCT DPH FROM O200

 

- ve výsledku nebudou uvedeny duplicitní řádky

- za duplicitní se považují řádky, které mají stejné hodnoty ve VŠECH vypisovaných sloupcích

- použití DISTINCT může výrazně způsobit provádění dotazu - každý nalezený řádek se musí porovnávat se všemi již nalezenými, aby se vyloučily duplicity

 

FROM - seznam vstupních tabulek

 

SELECT Z.cislo,Z.nazev,Z.obal,O.nazev FROM Z200 Z,O200 O WHERE Z.obal=O.cislo

 

- vypíše seznam zboží z tabulky Z200, pro každé zboží je z tabulky O200 vypsán název obalu

- použito spojení 2 tabulek

- ve FROM použít alias Z pro tabulku Z200 a alias O pro tabulku O200, aliasy slouží k odlišení sloupců

 

WHERE - omezení řádků

 

SELECT cislo,nazev FROM Z200 WHERE (Cislo>=10000) AND (Cislo<=19999)

 

nebo

 

SELECT cislo,nazev FROM Z200 WHERE Cislo BETWEEN 10000 AND 19999

 

- z číselníku zboží se vypíše pouze zboží s číslem 1xxxx

 

GROUP BY - seskupení řádků

 

SELECT dph,SUM(zasobakc) FROM Z200 GROUP BY dph

 

- vypíše celkovou zásobu v Kč zboží podle typu DPH

- použitá funkce SUM pro součet

- pole použitá v GROUP BY musí být použita i v SELECT

 

Seskupení podle více sloupců

 

SELECT skupina,dph,SUM(zasobakc) FROM Z200 GROUP BY skupina,dph

 

- vypíše celkovou zásobu v Kč zboží podle skupiny zboží a typu DPH

 

HAVING - omezení souhrnných řádků

 

SELECT skupina,dph,SUM(zasobakc) FROM Z200 GROUP BY skupina,dph HAVING SUM(zasobakc)>100000

 

- viz předchozí, vypíše pouze skupiny zboží a typy DPH, pro které je celková zásoba v Kč zboží větší než 100.000 Kč

 

ORDER BY - setřídění řádků na výstupu

 

SELECT cislo,nazev,MISASCII(nazev) AS [Nazev pro trideni] FROM O200 ORDER BY [Nazev pro trideni]

 

- seznam obalů se setřídí podle názvu (správně podle diakritiky)

- použitá funkce manas MISASCII, která převede řetězec s diakritikou na tvar vhodný pro třídění

 

Sestupné třídění řádků na výstupu

 

SELECT cislo,nazev,zmenadatum FROM O200 ORDER BY zmenadatum DESC

 

- seznam obalů sestupně podle datumu změny v číselníku obalů

 

Příklad složitého složeného SQL dotazu:

 

SELECT skupina AS [Skupina zbozi],FORMAT('%16.2m',suma) AS [Zasoba v Kc] FROM

(

SELECT * FROM

(

SELECT skupina,SUM(zasobakc) AS suma

FROM Z200

GROUP BY skupina

HAVING SUM(zasobakc)>100000

)

ORDER BY suma DESC

)

 

- vypíše se seznam skupin zboží, sestupně podle celkové zásoby v Kč, pouze skupiny se zásobou > 100.000 Kč

- zásoba je formátovaná s oddělovači tisíců včetně Kč

 

Spojení tabulek pomocí JOIN

 

SELECT Z.cislo,Z.nazev,Z.obal,O.nazev

FROM Z200 Z

JOIN O200 O

ON Z.obal=O.cislo

 

- do výsledku jsou zahrnuty pouze ty řádky z obou tabulek, pro které byla nalezena odpovídající hodnota v druhé tabulce

 

SELECT Z.cislo,Z.nazev,Z.obal,O.nazev

FROM Z200 Z

LEFT JOIN O200 O

ON Z.obal=O.cislo

 

- do výsledku jsou zahrnuty i řádky, pro které nebyly nalezeny odpovídající hodnoty v druhé tabulce

 

- spojování tabulek je časově velmi náročná činnost

- RIGHT [OUTER] JOIN a FULL [OUTER] JOIN nejsou podporovány

 

syntaxe:

 

- table1 [INNER] JOIN table2 ON (table1.common_field=table2.common_field)

[ [INNER] JOIN table3 ON (table2.common_field=table3.common_field) ] ...

 

- table1 LEFT [OUTER] JOIN table2 ON (table1.common_field=table2.common_field)

[ LEFT [OUTER] JOIN table3 ON (table2.common_field=table3.common_field) ] ...

 

Vnořený dotaz

 

SELECT cislo,nazev,zasobakc

FROM O200

WHERE zasobakc>(SELECT AVG(zasobakc) FROM O200)

 

- z číselníku obalů vybere obaly, jejichž zásoba v Kč je větší než průměrná zásoba obalů v Kč

 

Poznámka

/* poznamka */

 

Operátory ve výrazech

 

+, -, *, /, ^

 

(((1+(5)-(2))/2)*5)^2 ... 100, 2. a další sčítance a menšitele chce v závorkách

 

DIV

101 div 10 ... 10

 

MOD

101 mod 10 ... 1

 

SHL

1 shl 2 ... 4

 

SHR

4 shr 2 ... 1

 

Funkce v SQL dotazech

 

Matematické funkce

 

function Abs ( X : Float ): Float

- absolutní hodnota čísla

Abs(-10) ... 10, absolutní hodnota

 

function ArcTan ( X : Float ): Float

- arcus tangens

- vysledkem je velikost uhlu v radianech v intervalu (-Pi/2,Pi/2)

- prevod radianu na uhlove stupne se provede vynasobenim 180/Pi

- prevod uhlovych stupnu na radiany se provede vynasobenim Pi/180

- vypocet dalsich trigonometrickych funkci (mimo sin a cos):

Tan(x) = Sin(x) / Cos(x)

ArcSin(x) = ArcTan (x/sqrt (1-sqr (x)))

ArcCos(x) = ArcTan (sqrt (1-sqr (x)) /x)

ArcTan(1) ... 0.785

 

function Cos ( X : Float) : Float

- cosinus zadaného úhlu v radiánech

Cos(1) ... 0.540

 

function Exp( X : Float) : Float

- e^x

Exp(1) ... 2.718

 

function Frac ( X : Float) : Float

- vrátí desetinnou část z reálného čísla

- Frac(X) = X - Int(X)

Frac(1.23) ... 0.23

 

function Int ( X: Float ) : Float

- vrátí celou část z reálného čísla

Int(1.23) ... 1

 

function Ln ( X : Float ) : Float

- přirozený logaritmus

- hodnota parametru X musí být větší než 0

Ln(10) ... 2.302

 

function MAXOF ( arg1, arg2, ..., argn )

- největší z výčtu hodnot

- minimálně 2 argumenty

MAXOF(1,9) ... 9

 

function MINOF ( arg1, arg2, ... argn )

- nejmenší z výčtu hodnot

- minimálně 2 argumenty

MINOF(1,9) ... 1

 

function Pi(0) : Float

- Ludolfovo číslo

Pi(0) ... 3.14159265358979

 

function Power ( Zaklad, Exponent : Float ) : Float

- x^y

- x>0

Power(2,3) ... 8

 

function Round ( X : Extended ) : Integer

- převod reálného čísla na celé číslo zaokrouhlením

Round(10/1.8) ... 6, zaokrouhlí na celé číslo (5.555555)

 

function RoundDec ( Realne_cislo : Extended, Desetinnych_mist : Integer ) : Float

- zaokrouhlí reálné číslo na zadaný počet desetinných míst

RoundDec(1/1.9,2) ... 0.53, zaokrouhlí na 2 desetinná místa (0.5263157)

 

function Sin ( X : Float) : Float

- sinus zadaného úhlu v radiánech

Sin(1) ... 0.841

 

function Sqr ( X : Float ) : Float

- druhá mocnina, X*X

Sqr(2) ... 4

 

function Sqrt ( X : Float ) : Float

- druhá odmocnina

Sqr(4) ... 2

 

function Trunc ( X : Extended ) : Integer

- převod reálného čísla na celé číslo odseknutím desetinných míst

Trunc(10/1.8) ... 5, převede na celé číslo, odsekne desetinná místa (5.555555)

 

function TruncDec ( Realne_cislo : Extended, Desetinnych_mist : Integer) : Float

- z reálného čísla odřízne nadbytečná desetinná místa

TruncDec(1/1.9,2) ... 0.52, osekne na 2 desetinná místa (0.526315)

 

Funkce pro práci s datumem a časem

 

function EXTRACT ( extract_field FROM column_reference ) : integer

- získání roku, měsíce, dne, hodiny, minuty a sekundy z datumových polí

 

EXTRACT(YEAR FROM now) ... 2001

EXTRACT(month FROM now) ... 10

EXTRACT(Day FROM now) ... 27

 

EXTRACT(Hour FROM now) ... 18

EXTRACT(Minute FROM now) ... 21

EXTRACT(Second FROM now) ... 28

 

function Now

- aktuální datum a čas ve tvaru pro FormatDateTime()

Now ... 37191.5927230903

 

Řetězcové funkce

 

function Copy ( S : string; Pocatek, Delka: Integer ) : string

- část řetězce S od Pocatek v délce Delka

Copy('ABC',2,2) ... 'BC'

 

function Length ( S : string ) : Integer

- délka (počet znaků) řetězce S

Length('ABC') ... 3

 

function Lower ( S : string ) : string

- převod řetězce na malé znaky

- včetně diakritiky

Lower('ÁČĎĚÉÍĽŇÓŘŠŤÚŮÝŽ') ... 'áčďěéíľĺňóřšťúůýž'

 

function Pos ( Hledany_retezec : string; S : string ): Integer

- pozice Hledany_retezec v řetězci S

- 0 pokud neexistuje

Pos('ojk','Bojkovice') ... 2

 

function SUBSTRING ( column_reference FROM start_index [ FOR length ] ) : string

- podřetězec od pozice FROM v délce FOR znaku

 

SUBSTRING("ABCDE" FROM 2 FOR 3) ... 'BCD'

SUBSTRING("ABCDE" FROM 2) ... 'BCDE'

 

function TRIM ( LEADING | TRAILING | BOTH trimmed_char FROM column_reference ) : string

- zrušení úvodních (LEADING), koncových (TRAILING) nebo obojích (BOTH) znaků trimmed_char

 

TRIM(LEADING ' ' FROM ' ABC ') ... 'ABC '

TRIM(TRAILING ' ' FROM ' ABC ') ... ' ABC'

TRIM(BOTH ' ' FROM ' ABC ') ... 'ABC'

 

TRIM(BOTH 'X' FROM 'XABCX') ... 'ABC'

TRIM(BOTH 'X' FROM Upper('XABCx')) ... 'ABC'

 

function Upper ( S : string ) :  string

- převod řetězce na velké znaky

- včetně diakritiky

Upper('abc') ... 'ABC'

Upper('áčďěéíľĺňóřšťúůýž') ... 'ÁČĎĚÉÍĽĹŇÓŘŠŤÚŮÝŽ'

 

Podmínka

 

function IF ( Condition: Boolean, TrueResult, FalseResult ): ResultType

 

- funkce vrací TrueResult, je-li splněna podmínka Condition, v opačném případě FalseResult

 

select cislo,nazev,zasobaKc,zasobaMJ,if(zasobaMJ<>0,zasobaKc/zasobaMJ,0)

from o200

where if(zasobaMJ<>0,zasobaKc/zasobaMJ,0)>100

 

Formátovací funkce

 

function Format ( Format : string; Arg1, Arg2, Arg3, ... ) : string;

 

- formátuje sérii argumentů do výsledného řetězce podle Format

 

Format('%8d',123) ... '     123', celé číslo

 

Format('%8.2f',123.456) ... '  123.46', reálné číslo

 

Format('%12.2e',123.456) ... '    1.2E+002', vědecká notace

Format('%12e',123.456) ... '1.23456000000000E+002'

Format('%.e',123.456) ... '1.2E+002'

 

Format('%.g',100000000000.) ... '1E11', nejkratší zobrazení, musí být reálné číslo (stačí desetinná tečka

Format('%20.g',100000000000.) ... '                1E11'

Format('%20g',100000000000.) ... '        100000000000'

 

Format('%20n',100000000000.) ... '  100,000,000,000.00', oddělené tisíce, 2 desetinná místa, musí být reálné číslo

Format('%.n',100000000000.) ... '100,000,000,000'

Format('%20.4n',100000000000.) ... '100,000,000,000.0000'

 

Format('%m',1000000.) ... '1,000,000.00 Kc', peněžní hodnota

Format('%.m',1000000.) ... '1,000,000 Kc'

Format('%20.4m',1000000.) ... '   1,000,000.0000 Kc'

 

Format('%10s','ABC') ... '       ABC', retezec

 

Format('%x',127) ... '7F', hexadecimal, musí být celé číslo

 

Format('%d text %x',127,127) ... '127 text 7F'

 

function FormatDateTime ( Format : String; DateTime : float ) : String

- formátuje systémově zadaný datum a čas do výsledného řetězce podle Format

 

FormatDateTime('dd.mm.yyyy',Now) ... '27.10.2001', datum

 

FormatDateTime('c',Now) ... '27.10. 2001 16:16:00', datum a čas

 

FormatDateTime('d',Now) ... '5', den bez úvodní nuly

FormatDateTime('dd',Now) ... '05', den s úvodní nulou

FormatDateTime('ddd',Now) ... 'so', zkratka dne v týdnu

FormatDateTime('dddd',Now) ... 'sobota',

FormatDateTime('ddddd',Now) ... '27.10. 2001'

FormatDateTime('dddddd',Now) ... '27. říjen 2001'

 

FormatDateTime('m',Now) ... '5', měsíc bez úvodní nuly

FormatDateTime('mm',Now) ... '05', měsíc s úvodní nulou

FormatDateTime('mmmm',Now) ... 'říjen'

 

FormatDateTime('yy',Now) ... '01', rok RR

FormatDateTime('yyyy',Now) ... '2001', rok RRRR

 

FormatDateTime('h',Now) ... '5', hodina bez úvodní nuly

FormatDateTime('hh',Now) ... '05', hodina s úvodní nulou

 

FormatDateTime('n',Now) ... '5', minuta bez úvodní nuly

FormatDateTime('nn',Now) ... '05', minuta s úvodní nulou

 

FormatDateTime('s',Now) ... '5', sekund bez úvodní nuly

FormatDateTime('ss',Now) ... '05', sekund s úvodní nulou

 

FormatDateTime('z',Now) ... '5', milisekund bez úvodní nuly, 0-999

FormatDateTime('zzz',Now) ... '005', milisekund s úvodní nulou, 000-999

 

FormatDateTime('t',Now) ... '16:24'

FormatDateTime('tt',Now) ... '16:25:18'

 

FormatDateTime('dd.mm.yyyy "text"',Now) ... '27.10.2001 text'

 

function FormatFloat ( Format : String; Value : Float ) : String

- formátuje reálné číslo do výsledného řetězce podle Format

 

Znaky používané ve Format:

 

0 - číslice

# - číslice, pro '0' prázdný řetězec

. - desetinná tečka

, - výstup bude obsahovat oddělovače tisíců, čárka kdekoliv

E+,E-,e+,e- - vědecká notace

"text" - text

; - oddělení formátování pro kladné a záporné číslo a nulu

 

FormatFloat('000',0) ... '000'

FormatFloat('###',0) ... ''

FormatFloat('##0.00',0) ... '0.00'

FormatFloat('0.000E+00',-1234) ... '-1.234E+03'

FormatFloat('0.000e+00',-1234) ... '-1.234e+03'

FormatFloat('0.000E-00',-1234) ... '-1.234E03'

FormatFloat('0.000e-00',-1234) ... '-1.234e03'

FormatFloat('#,##0.00;;Zero',0) ... 'Zero'

 

Agregační funkce

 

- agregační (souhrnné) funkce pracují najednou s celou množinou hodnot

- parametr agregační funkce musí obsahovat název sloupce, nad kterým se má pracovat

- v parametru agregační funkce nesmí být použita další agregační funkce

- lze použít modifikátor DISTINCT - vyloučení duplicit

 

AVG()

- prostý aritmetický průměr ze všech hodnot v množině

select avg(zasobamj) from o200 ... 721.9

 

COUNT(*)

- počet hodnot ve sloupci

select count(*) from o200 ... 99

select count(DISTINCT DPH) from o200 ... 2, počet různých DPH

 

MAX()

- maximální hodnota z množiny

- DISTINCT nemá význam

select max(zasobamj) from o200 ... 28434

 

MIN()

- minimální hodnota z množiny

- DISTINCT nemá význam

select min(zasobamj) from o200 ... -12508

 

STDEV()

- velikost směrodatné odchylky (standard deviation)

select stdev(zasobamj) from o200 ... 4368.9

 

SUM()

- součet hodnot v množině

select sum(zasobamj) from o200 ... 71470

 

Funkce MIS dostupné v xSQL dotazech

 

Pro komplexní zadávání SQL dotazů bez nutnosti spojovat tabulky kvůli např. doplnění jména osoby (podstatné zpomalení).

 

MISASCII ( Retezec_1250 : string ) : string

- funkce převede řetězec v kódu 1250 na ASCII, velká písmena

- určeno pro třídění bez ohledu na diakritiku a velikost písmen

 

MISCARKOVYKODZ200 (Cislo_zbozi : integer ) : string

- funkce pro zadané číslo zboží vrátí čárkový kód z číselníku zboží nebo ? pokud zboží neexistuje

 

MISCELNISAZEBNIKZ200 (Cislo_zbozi : integer ) : string

- funkce pro zadané číslo zboží vrátí číslo celního sazebníku z číselníku zboží nebo prázdný řetězec pokud zboží neexistuje

 

MISCENA00Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #00 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA01Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #01 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA02Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #02 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA03Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #03 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA04Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #04 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA05Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #05 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA06Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #06 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA07Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #07 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA08Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #08 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENA09Z200 (Cislo_zbozi : integer ) : float

- funkce pro zadané číslo zboží vrátí cenu #09 z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISCENAPODLEPARTNERA (Cislo_zbozi : integer; Cislo_partnera : integer ) : float

- funkce z číselníku partnerů pro zadané číslo partnera přečte parametr TypCeny (pro Drogerii D_TypCeny)

- je-li typ ceny záporný nebo partner neexistuje, bere se typ ceny nulový

- je-li typ ceny větší nez 32, bere se 29

- funkce vrátí pro zadané číslo zboží z číselníku zboží cenu podle typu ceny:

0..29 - cena #00 - #29

30 - pole ZdrojovaCena

31 - pole Currency_01 - poslední nákupní cena

32 - pole Currency_09 - poslední prodejní cena

- pokud zboží neexistuje, vrátí se 0.0

 

MISCENAPODLETYPU (Cislo_zbozi : integer; Typ_ceny : integer ) : float

- funkce vrátí pro zadané číslo zboží z číselníku zboží cenu podle typu ceny:

0..29 - cena #00 - #29

30 - pole ZdrojovaCena

31 - pole Currency_01 - poslední nákupní cena

32 - pole Currency_09 - poslední prodejní cena

- je-li typ ceny záporný, bere se nulový

- je-li typ ceny větší než 32, bere se 29

- pokud zboží neexistuje, vrátí se 0.0

 

MISCENASDPH ( Typ_DPH : integer; Cena_bez_DPH ) : float

- funkce vrátí podle typu DPH (hodnoty nastavené v konfiguraci:

0 = 0 % nulová sazba / 1 = 5% snížená sazba / 2 = 22% základní sazba)

k zadané ceně bez DPH cenu včetně DPH zaokrouhlenou na 0,10 Kc

- jiný typ DPH nez 0/1/2 se bere jako 0

 

MISCISLOPOSLEDNIHODOKLADU : integer

- funkce vrátí číslo posledního dokladu pořízeného na PC

 

MISCISLOZBOZICK00 ( CK : string ) : integer

- funkce pro zadaný čárkový kód vrátí číslo zboží z číselníku čárkového kódu

- pokud čárkový kód neexistuje, vrátí 0

 

MISDATUMDD ( Datum : float ) : integer

- funkce vrátí den DD zadaného datumu

 

MISDATUMINTDD ( DatumRRMMDD : integer ) : integer

- funkce vrátí den DD z datumu zadaného jako RRMMDD

 

MISDATUMINTMM ( DatumRRMMDD : integer ) : integer

- funkce vrátí měsíc MM z datumu zadaného jako RRMMDD

 

MISDATUMINTMMDD ( DatumRRMMDD : integer ) : integer

- funkce vrátí měsíc a den MMDD z datumu zadaného jako RRMMDD

 

MISDATUMINTRR ( DatumRRMMDD : integer ) : integer

- funkce vrátí rok RR z datumu zadaného jako RRMMDD

 

MISDATUMINTRRMMDD ( DatumRRMMDD : integer ) : integer

- funkce vrátí rok, měsíc a den RRMMDD z datumu zadaného jako RRMMDD nebo RRRRMMDD

 

MISDATUMINTRRRR ( DatumRRMMDD : integer ) : integer

- funkce vrátí rok RR z datumu zadaného jako RRMMDD nebo rok RRRR z datumu zadaného jako RRRRMMDD

 

MISDATUMINTRRRRMMDD ( DatumRRRRMMDD : integer ) : integer

- funkce vrátí zadaný datum RRRRMMDD

 

MISDATUMMM ( Datum : float ) : integer

- funkce vrátí měsíc MM zadaného datumu

 

MISDATUMMMDD ( Datum : float ) : integer

- funkce vrátí měsíc a den MMDD zadaného datumu

 

MISDATUMRR ( Datum : float ) : integer

- funkce vrátí rok RR zadaného datumu

 

MISDATUMRRMMDD ( Datum : float ) : integer

- funkce vrátí datum RRMMDD zadaného datumu

 

MISDATUMRRRR ( Datum : float ) : integer

- funkce vrátí rok RRRR zadaného datumu

 

MISDATUMRRRRMMDD ( Datum : float ) : integer

- funkce vrátí datum RRRRMMDD zadaného datumu

 

MISDODAVATELZ200 (Cislo_zbozi : integer ) : integer

- funkce pro zadané číslo zboží vrátí číslo dodavatele z číselníku zboží nebo 0 pokud zboží neexistuje

 

MISDPCCENABEZDPH ( Cislo_partnera : integer; Cislo_zbozi : integer; Cena_bez_DPH : float; Typ_DPH : integer; Mnozstvi_MJ : float ) : float

- funkce vrátí doporučenou prodejní cenu DPC bez DPH z ceny bez DPH

- pro zadaného partnera, zboží, typ DPH a množství zboží

- je-li cena #09 nenulová, vrátí se pro TypCeny=6 cena #09 - akční cena (bez DPH bez zaokrouhlení)

- připočte se marže doporučené prodejní ceny (viz funkce MISDPCMARZE)

 

MISDPCCENASDPH ( Cislo_partnera : integer; Cislo_zbozi : integer; Cena_bez_DPH : float; Typ_DPH : integer; Mnozstvi_MJ : float ) : float

- funkce vrátí doporučenou prodejní cenu DPC s DPH z ceny bez DPH

- pro zadaného partnera, zboží, typ DPH a množství zboží

- je-li cena #09 nenulová, vrátí se pro TypCeny=6 cena #09 - akční cena

- výsledek je zaokrouhlen na desetník nebo na desetník nahoru podle parametru ZaokrouhlovatDesetnikNahoruOK z konfigurace

- připočte se marže doporučené prodejní ceny (viz funkce MISDPCMARZE)

 

MISDPCMARZE ( Cislo_partnera : integer; Cislo_zbozi : integer; Cena_bez_DPH : float; Typ_DPH : integer ) : float

- funkce vrátí marži doporučené prodejní ceny DPC v %

- pro zadaného partnera, zboží, ceny bez DPH a typu DPH

- je-li marže nulová nebo záporná, provede se zápis do logového souboru #DPCMarze P/Z/Cena/DPH

- v adresáři \TISK hleda soubor XXXXXXXX.SKU, kde XXXXXXXX je 8-mi místné číslo partnera včetně levostranných nul

- údaje pro soubor *.SKU jsou pro partnera uloženy v číselníku partnerů v poli BlobMemo

- je-li nastaven parametr DebugDPCOK v konfiguraci, provede se zápis do logového souboru #3 - DPC/New/MarzeDPC/P/Z/DPH/CenaMJ

- příklad obsahu souboru 00111111.SKU:

;Skupiny pro partnera:  Naše prodejny

;

15.00     16 - Nealko sirupy a nápoje

12.75    266 - Ostatní nápoje

25.00 -11113 - Jablka

- úvodní středník znamená poznámku

- důležité jsou 2 číselné údaje zleva, další údaje monou být poznámky

- mezi oběma číselnými údaji může být 1 nebo větší počet mezer

- 1. reálné číslo udává marži v % pro doporučenou prodejní cenu zboží ve skupině zadané jako 2. celé číslo

- skupina zboží (2. číslo) může být i záporná, v tomto případě se bere jako konkrétní číslo zboží

- ze zadaného zboží z číselníku zboží se zjistí skupina zboží a ze zadaného DPH (nebere se z číselníku zboží) se připraví z ceny #09 akční cena bez DPH, která je v poli cena #09 uvedená včetně DPH

- ze zadaného partnera z číselníku partnerů se zjistí TypCeny

- pokud je nenulová cena #09 a současně TypCeny=6, použije se akční cena (cena #09) bez ohledu na doporučenou prodejní cenu

 

MISDPH ( Typ_DPH : integer ) : float

- funkce vrátí podle typu DPH (hodnoty nastavené v konfiguraci:

0 = 0 % nulová sazba / 1 = 5% snížená sazba / 2 = 22% základní sazba)

odpovídající sazbu DPH 0% / 5% / 22%

- jiný typ DPH než 0/1/2 se bere jako 0

 

MISDPHO200 ( Cislo_obalu : integer ) : integer

- funkce vrátí typ DPH 0/1/2 z číselníku obalů pro zadané číslo obalu

 

MISDPHZ200 ( Cislo_zbozi : integer ) : integer

- funkce vrátí typ DPH 0/1/2 z číselníku zboží pro zadané číslo zboží

 

MISEAN28Z200 ( Cislo_zbozi : integer ) : string

- funkce vrátí pro zadané číslo zboží z číselníku zboží, pokud existuje, první čárkový kód z číselníku čárkového kódu nebo ? pokud neexistuje

 

MISEGALIZACE2CK00 ( Carkovy_kod : string ) : float

- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Egalizace2

 

MISEGALIZACE2Z200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Egalizace2

 

MISEGALIZACECK00 ( Carkovy_kod : string ) : float

- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Egalizace

 

MISEGALIZACEZ200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Egalizace

 

MISFORMATCISLO ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string

- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných

- funkce je kopií funkce MISFORMATCISLO2 pro současné použití v SQL dotazu

 

MISFORMATCISLO2 ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string

- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných

- funkce je kopií funkce MISFORMATCISLO pro současné použití v SQL dotazu

 

MISHMOTNOSTMJGZ200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole HmotnostMJg

 

MISICOP200 ( Cislo_partnera : integer ) : integer

- funkce vrátí pro zadané číslo partnera z číselníku partnerů pole IČO

 

MISJKPOVZ200 ( Cislo_zbozi : integer ) : string

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole JKPOV

 

MISMJZ200 ( Cislo_zbozi : integer ) : string

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole MJ

 

MISMOPKC ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MO příjem Kč pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMOPMJ ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MO příjem MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMOVKC ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MO výdej Kč pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMOVMJ ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MO výdej MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMZPKC ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MZ příjem Kč pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMZPMJ ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MZ příjem MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMZVKC ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MZ výdej Kc pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISMZVMJ ( Index : integer; Mesic : integer ) : float

- funkce vrátí z databáze měsíčních obratů MZ výdej MJ pro zadaný index a měsíc (1-12/0=aktuální měsíc/-1=minulý měsíc, pro leden je 1)

 

MISNAZEVDO00 ( Cislo_dodavatele : integer ) : string

- funkce vrátí pro zadané číslo dodavatele z číselníku dodavatelů název dodavatele

 

MISNAZEVDODAVATELEZ200 ( Cislo_zbozi : integer ) : string

- funkce vrátí pro zadané číslo zboží z číselníku zboží název dodavatele

 

MISNAZEVO200 ( Cislo_obalu : integer ) : string

- funkce vrátí pro zadané číslo obalu z číselníku obalů název obalu

 

MISNAZEVP200 ( Cislo_partnera : integer ) : string

- funkce vrátí pro zadané číslo partnera z číselníku partnerů název partnera

 

MISNAZEVPC00 ( Cislo_PC : integer ) : string

- funkce vrátí pro zadané číslo PC z číselníku PC název PC

 

MISNAZEVRI00 ( Cislo_ridice : integer ) : string

- funkce vrátí pro zadané číslo řidiče z číselníku řidičů název řidiče

 

MISNAZEVWU00 ( Cislo_uzivatele : integer ) : string

- funkce vrátí pro zadané číslo uživatele z číselníku uživatelů název uživatele

 

MISNAZEVZ200 ( Cislo_zbozi : integer ) : string

- funkce vrátí pro zadané číslo zboží z číselníku zboží název zboží

 

MISNAZEVZS00 ( Cislo_skupiny_zbozi : integer ) : string

- funkce vrátí pro zadané číslo skupiny zboží z číselníku skupin zboží název skupiny zboží

 

MISOBAL2CK00 ( Carkovy_kod : string ) : integer

- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Obal2

 

MISOBAL2Z200 (Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Obal2

 

MISOBALCK00 ( Carkovy_kod : string ) : integer

- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole Obal

 

MISOBALZ200 (Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Obal

 

MISOBECCTVEREC10 ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec10

 

MISOBECCTVEREC100 ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec100

 

MISOBECCTVEREC25 ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec25

 

MISOBECCTVEREC50 ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole Ctverec50

 

MISOBECDODAVACIPOSTA ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole DodavaciPosta

 

MISOBECNAZEV ( Cislo_obce : integer ) : string

- funkce vrátí pro zadané číslo obce z číselníku obcí pole Nazev - název obce

 

MISOBECNAZEVASCII ( Cislo_obce : integer ) : string

- funkce vrátí pro zadané číslo obce z číselníku obcí pole NazevASCII - název obce pro třídění

 

MISOBECNCELEK ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole NCelek - číslo současného kraje

 

MISOBECNEU ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole NEU - číslo celku podle EU

 

MISOBECNKRAJ ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole NKraj - číslo dřívějšího kraje

 

MISOBECNOKRES ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole NOkres - číslo dřívějšího okresu

 

MISOBECOBYVATEL ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole Obyvatel - orientační počet obyvatel obce

 

MISOBECPODNIKATELU ( Cislo_obce : integer ) : integer

- funkce vrati pro zadane cislo obce z ciselniku obci pole Pondnikatelu - orientacni odhad poctu podnikatelu v obci

 

MISOBECPSC ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole PSC - poštovní směrovací číslo

 

MISOBECSBRNO ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole SBrno - silniční vzdálenost z Brna v km

 

MISOBECSOSTRAVA ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole SOstrava - silniční vzdálenost z Ostravy v km

 

MISOBECSUB ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole SUB - silniční vzdálenost z Uherského Brodu v km

 

MISOBECUTO ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole UTO - telefonní UTO

 

MISOBECVBRNO ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole VBrno - vzdušná vzdálenost z Brna v km

 

MISOBECVOSTRAVA ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole VOstrava - vzdušná vzdálenost z Ostravy v km

 

MISOBECVUB ( Cislo_obce : integer ) : integer

- funkce vrátí pro zadané číslo obce z číselníku obcí pole VUB - vzdušná vzdálenost z Uherského Brodu v km

 

MISOBECVZDALENOST ( Cislo_obce1 : integer; Cislo_obce2 : integer ) : integer

- funkce vrátí pro zadané číslo obce #1 a #2 z číselníku obcí jejich vzdušnou vzdálenost v km

 

MISOBECZCELEK ( Cislo_obce : integer ) : string

- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZCelek - zkratka současného kraje

 

MISOBECZEU ( Cislo_obce : integer ) : string

- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZEU - zkratka celku podle EU

 

MISOBECZKRAJ ( Cislo_obce : integer ) : string

- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZKraj - zkratka dřívějšího kraje

 

MISOBECZOKRES ( Cislo_obce : integer ) : string

- funkce vrátí pro zadané číslo obce z číselníku obcí pole ZOkres - zkratka dřívějšího okresu

 

MISOKRESNAZEV ( Cislo_okresu : integer ) : string

- funkce vrátí pro zadané číslo okresu z číselníku okresů jeho název

 

MISOKRESNAZEVASCII ( Cislo_okresu : integer ) : string

- funkce vrátí pro zadané číslo okresu z číselníku okresů jeho název ASCII pro třídění

 

MISPOCETOBALU2CK00 ( Carkovy_kod : string ) : float

- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole PocetObalu2

 

MISPOCETOBALUCK00 ( Carkovy_kod : string ) : float

- funkce vrátí pro zadaný čárkový kód z číselníku čárkového kódu pole PocetObalu

 

MISPOSLEDNIDODAVATELZ200 ( Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole PosledniDodavatel

 

MISPOSLEDNINCZ200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole Currency_01 - poslední nákupní cena

 

MISRIDICAU00 ( Cislo_auta : integer ) : integer

- funkce vrátí pro zadané číslo auta z číselníku aut číslo řidiče

 

MISSKUPINAZ200 ( Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané číslo zboží z číselníku zboží číslo skupiny zboží

 

MISSLEVAOKZ200 ( Cislo_zbozi : integer ) : boolean

- funkce vrátí pro zadané číslo zboží z číselníku zboží pole SlevaOK

 

MISSPZAU00 ( Cislo_auta : integer ) : string

- funkce vrátí pro zadané číslo auta z číselníku aut SPZ auta

 

MISTRID1250 ( Retezec : string ) : string

- funkce vrátí pro zadaný řetězec v kódu 1250 upravený řetězec pro jeho třídění podle abecedy včetně diakritiky

 

MISTRIDCISLO ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string

- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných pro jeho třídění včetně záporných hodnot

- funkce je kopií funkce MISTRIDCISLO2 pro současné použití v SQL dotazu

 

MISTRIDCISLO2 ( Realne_cislo : float; Celkem_mist : integer; Desetinnych_mist : integer ) : string

- funkce vrátí zadané reálné číslo jako řetězec se zadaným počtem míst celkem a z toho zadaných míst desetinných pro jeho třídění včetně záporných hodnot

- funkce je kopií funkce MISTRIDCISLO pro současné použití v SQL dotazu

 

MISTRIM ( Retezec : string ) : string

- funkce vrátí zadaný řetězec bez levých i pravých mezer

 

MISTRZBAPRODEJNY ( Cislo_partnera : integer ) : float

- funkce vrátí pro zadaného partnera z číselníku partnerů pole Currency_01 - tržba prodejny

 

MISTYPCENYP200 ( Cislo_partnera : integer ) : integer

- funkce vrátí pro zadaného partnera z číselníku partnerů pole TypCeny

 

MISTYPZBOZI ( Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané zboží z číselníku zboží jeho typ podle čísla zboží:

cislo_zbozi  typ_zbozi

    0..10000     0

10000..49999     1

50000..89999     2

90000..          3

 

MISUMISTENI2Z200 ( Cislo_zbozi : integer ) : string

- funkce vrátí pro zadané zboží z číselníku zboží pole Umisteni2 (řetězec)

 

MISUMISTENIZ200 ( Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané zboží z číselníku zboží pole Umisteni (číslo)

 

MISZAOKROUHLENI ( Realne_cislo : float; Typ_zaokrouhleni : integer ) : float

- funkce vrátí zadané reálné číslo zaokrouhlené podle typu zaokrouhlení:

 0 - 0.01

 1 - 0.10

 2 - 1.00 statisticky

 3 - 0.10 nahoru

 4 - 1.00 nahoru

 5 - 0.10 nahoru - 2 des. místa - zjednodušený daňový doklad

 6 - počet desítek

 7 - počet stovek

 8 - počet tisíců

 9 - počet desetitisíců

10 - počet statisíců

11 - počet miliónů

 

MISZASOBAKCZ200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané zboží z číselníku zboží pole ZasobaKc

 

MISZASOBAMJZ200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané zboží z číselníku zboží pole ZasobaMJ

 

MISZASOBANAPOCETDNIZ200 ( Cislo_zbozi : integer ) : integer

- funkce vrátí pro zadané zboží z číselníku zboží pole ZasobaNaPocetDni

 

MISZDROJOVACENAZ200 ( Cislo_zbozi : integer ) : float

- funkce vrátí pro zadané zboží z číselníku zboží pole ZdrojovaCena

 

Poznámky:

 

- funkce lze použít tam, kde lze použít sloupec (SELECT,WHERE)

- funkce MISxxx nesmí být vnořené (pro vnoření je nutné použít

samostatně i vnořenou funkci)

- nelze použít funkci MISxxx při zařazení MISxxx do FROM

- v části ORDER BY mohou být uvedena pouze pole, která jsou uvedena

v části SELECT (v části WHERE libovolná)

---> pro správné formátované třídění čísel musí být v části SELECT uvedeno i MISTRIDCISLO(..)

 

Comments (...)

Created with Help & Manual 6 and styled with Premium Pack 2.0