Dotazy
Dotazy slouží k pokročilému vyhledávání dat ve stromových a instalačních záznamech a k vytváření tabulkových sestav.
Dotazy se zapisují textově v jazyce, který je podobný dotazovacímu jazyku SQL. Na rozdíl od jazyka SQL však obsahuje nástroje pro vyhledávání ve stromové struktuře objektů.
Práci s dotazy si ukážeme na příkladu dotazu na vyhledání všech počítačů ve stromu.
- V hlavní nabídce zvolte možnost Dotaz - Nový.
- Na obrazovce se otevře okno Průvodce vytvořením dotazu - krok 1, ve kterém musíme vybrat objekt pro správu dotazů. V našem jednoduchém příkladu je řídicím objektem jednoduše objekt, který hledáme, tedy počítač. Rozbalte tedy objekt sestavy počítač a vyberte v něm objekt počítač. Poté pokračujte tlačítkem Další.
- Tím se dostaneme na druhou stranu průvodce, tj. na Průvodce dotazem - krok 2. Zde vybereme údaje, které se zobrazí ve výsledku dotazu o každém nalezeném objektu. V seznamu vpravo vybereme vlastnosti, jako je Název počítače a Datum nákupu.
- Tlačítko Další otevře stránku Průvodce vytvořením dotazu - krok 3. Zde můžeme změnit nadpisy a šířky sloupců ve výstupní sestavě a přidat podmínky vyhledávání. V našem případě nemusíme nic měnit a stačí pokračovat tlačítkem Další.
- Na stránce Průvodce vytvořením dotazu - krok 4 můžete upravit řazení a seskupení položek ve výsledku dotazu. Opět můžeme pokračovat tlačítkem Další.
- Na stránce Průvodce vytvořením dotazu - Krok 5 zadáme název tiskové sestavy a stiskneme tlačítko Náhled.
- Na obrazovce se otevře okno Parametry dotazu, kde můžete dále omezit rozsah vyhledávacího stromu.
- Poté stiskněte tlačítko OK a na obrazovce se otevře tisková sestava s výsledkem dotazu v poli Tisková sestava.
- Okno tiskové sestavy zavřete. Tím se vrátíte do průvodce, kde stiskněte tlačítko Dokončit.
- Na obrazovce se otevře okno Hledat - dotaz, kde se zobrazí textové zadání právě vytvořeného dotazu. Pomocí tlačítka Uložit jej můžete uložit do souboru, odkud jej později načtete pomocí tlačítka Načíst.
- Stiskněte tlačítko Vyhodnotit.
- V okně se znovu objeví parametry dotazu jako v náhledovém zobrazení. Po potvrzení dotazu se dotaz vyhodnotí a výsledek se zobrazí v okně Query results (Výsledky dotazu), ve kterém si můžete pomocí tlačítka Print Report (Tisková sestava)zobrazit tiskovou sestavu nebo pomocí tlačítka Export (Exportovat) uložit výsledek do textového souboru, který lze dále zpracovat např. v programu Microsoft Excel.
Syntaxe dotazovacího jazyka
Symbol |
Význam |
| |
nebo |
[ ] |
volitelný |
... |
repeat |
Parametr
Parametr dotazu je datová hodnota, kterou uživatel zadává v okamžiku vyhodnocení dotazu.
Parameter= Parameter_Name Parameter_Type
kde:
Identifikuje parametr. Názvy jednotlivých parametrů musí být jedinečné a nesmí se shodovat s identifikátory sloupců. Pokud je název parametru složen z více slov, musí být uzavřen do hranatých závorek.
Parameter_Type |
type |
T_TEXT |
text |
T_DOUBLE |
reálné číslo |
T_DATETIME |
datum, čas |
Příklad 1. Jazyk dotazu - parametr
Chceme vypsat seznam zásahů na počítačích v zadaném časovém intervalu. Program se před vyhodnocením dotazu dotáže na hodnoty parametrů From data. a To data
PARAMETERS [From date] T_DATETIME, [To date] T_DATETIME
SELECT AS "Hit Summary"=S "Setup"=@object
WHERE @class LIKE "Computer*"
WITH
SELECT HISTORY AS S1 "Made by"=@user,"Description"=@description
WHERE @date>=[From date] AND @date<=[To date]
HAVING s1
ENDWITH
Typ_dotazu
Query_Type |
Popis |
HISTORY |
položky historie objektu dotazu |
NOTES |
query object notes poznámky |
SWINST |
dotaz na nainstalované softwarové produkty |
Dotaz typu HISTORY, NOTICE nebo SWINST lze použít pouze jako poddotaz a nesmí obsahovat jiné poddotazy. Kromě toho má dotaz SWINST smysl pouze tehdy, je-li poddotazem dotazu, který vrací objekty typu "computer".
Poznámka:
Dotazy typu HISTORY a NOTICE nepracují se smazanými (skrytými) záznamy v deníku
Příklad 2. Jazyk dotazu - typ dotazu
Chceme vypsat všechny anotace počítačových objektů seřazené chronologicky.
SELECT AS "Objects notes" =S0 WHERE @class LIKE "Computer*"
WITH
SELECT NOTICE AS S1 @date, @user, @description
ENDWITH
ORDER BY S1.@date
Příklad 3. Jazyk dotazu - typ dotazu
Chceme vypsat všechny počítače a nainstalované operační systémy. Zároveň požadujeme, aby byl výsledek seskupen podle nainstalovaných operačních systémů.
SELECT AS "List of installed operating systems"=S
"OS"=S1.@product, "Computer"=@object, "Inventory number"=[inventory number],
"User"=[user]
WHERE @class LIKE "Computer*"
WITH
SELECT SWINST AS S1
WHERE @category=SW_OS
HAVING S1
ENDWITH
GROUP BY S1.@product
Název
Název výstupní sestavy.
Příklad 4. Jazyk dotazu - název
Chceme vypsat všechny počítače. Záhlaví sestavy bude obsahovat text "Počítače".
SELECT AS "Computers"=S0 @object
WHERE @class LIKE "Computer*"
Query_Id
Identifikátor dotazu nebo poddotazu v sekci WITH. Pokud mají dva poddotazy vlastnosti se stejným názvem, můžete pro jejich odlišení použít Query_Id.Property, například "S0.Capacity". Pokud je identifikátor dotazu složen z více slov, zapište jej do hranatých závorek
Příklad 5. Jazyk dotazu - identifikátor dotazu
Chceme vypsat všechny počítače a zajímají nás pouze data: Název počítače, klávesnice, monitor. Vlastnosti Název od objektů Monitor a Klávesnice je třeba odlišit identifikátorem dílčího dotazu.
SELECT AS S0 S0.@object, S1.Name, S2.Name
WHERE @class LIKE "Computer*"
WITH
SELECT AS S1 WHERE @class="Keyboard",
SELECT AS S2 WHERE @class="Monitor"
ENDWITH
DOLŮ, NAHORU, HLUBOKÝ, MĚLKÝ, NEJBLIŽŠÍ, VŠECHNY
Modifikátory určují způsob vyhledávání objektů v poddotazu v sekci WITH.
Modifikátor |
Popis |
DOLŮ |
Vyhledávání směrem dolů, tj. vyhledávání v podstromu řídicího objektu (výchozí hodnota) |
UP |
prohledávání směrem nahoru, tj. prohledávají se všechny objekty na cestě ke kořeni stromu |
DEEP |
prohledání všech potomků řídicího objektu (výchozí hodnota) |
SHALLOW |
prohledává pouze v přímých potomcích řídicího objektu (nikoli v potomcích potomků) |
NEAREST |
po nalezení nejbližšího objektu ukončí prohledávání do hloubky (výchozí hodnota) |
ALL |
prohledá celý podstrom řídicího objektu |
Modifikátory NEAREST a ALL mají smysl pouze v kombinaci s modifikátorem DEEP, který zajišťuje prohledávání do hloubky.
Příklad 6. Jazyk dotazu - modifikátory
Chceme vypsat počítačové sestavy a zajímají nás pouze tyto údaje: název sestavy, paměť RAM, HDD. Dalším omezením je, že nás zajímá pouze paměť RAM umístěná na základní desce. Jako řídicí objekt zadáme objekt PC.
Z příkladu dvou počítačových sestav je patrné, že v počítači 2 je paměť umístěna na zvukové kartě. Aby se zabránilo výpisu této paměti, použije se v dotazu S2 modifikátor SHALOW, který zajistí, že se bude prohledávat pouze úroveň objektu PC.
Modifikátor UP použitý v dotazu S1 zajišťuje, že bude vyhledán objekt Assembly, který se nachází nad objektem PC (počítač).
SELECT AS S0 S1.@object, S2.@object, S3.@object
WHERE @class LIKE "Computer*"
WITH
SELECT AS S1 UP WHERE @class="Assembly",
SELECT AS S2 DOWN SHALLOW WHERE @class="memory RAM",
SELECT AS S3 DOWN SHALL WHERE @class="Hard disk"
ENDWITH
Column_Title
Nastavuje záhlaví sloupce ve výstupní sestavě.
Příklad 7. Jazyk dotazu - záhlaví sloupce
Chceme vypsat seznam počítačů a zajímají nás data: Počítač, Pevný disk, Paměť RAM, Procesor. Sloupce ve výstupní sestavě budou mít nadpisy Počítač, Pevný disk, Paměť RAM, Procesor.
SELECT AS S0 "Computer"=S0.@object, "HDD"=S1.@object,
"RAM"=S2.@object, "CPU"=S3.@object
WHERE @class LIKE "Computer*"
WITH
SELECT AS S1 WHERE @class="Hard Disk",
SELECT AS S2 WHERE @class="RAM",
SELECT AS S3 WHERE @class="Processor"
ENDWITH
Pokud byste nezadali žádné nadpisy sloupců, měly by sloupce názvy: S1.Name, S2.Name, S3.Name.
Column_Width
Určuje šířku sloupce ve výstupní sestavě. Šířka se udává jako procento šířky celé sestavy.
Příklad 8. Jazyk dotazu - šířka sloupce
Chceme vypsat seznam počítačů a zajímají nás data: Název sestavy, Uživatel, Podlaží.
Dále požadujeme, aby sloupec Název sestavy byl pojmenován Počítač a byl 40 % šířky tiskové stránky a sloupec Podlaha 20 % šířky stránky.
SELECT "Computer",40%=@object, User, 20%=Floor
WHERE @class LIKE "Computer*"
Vlastnost
Název vlastnosti. Pořadí sloupců v dotazu odpovídá jejich pořadí ve výstupní sestavě. Pokud je název vlastnosti složen z více slov, musí být zapsán v hranatých závorkách.
Jako vlastnost můžete použít také následující speciální hodnoty:
Vlastnost |
Popis |
@authorized |
instalace softwaru v počítači je potvrzena nebo počítač je licencován |
@category |
kategorie softwarového produktu (např. operační systém) |
@cdkey |
Klíč CD softwarového produktu |
@class |
typ objektu |
@date |
datum záznamu historie, poznámky k objektu nebo instalace sw produktu |
@description |
Typ dotazu(Query_Type) |
Význam vlastnosti @description |
HISTORY |
popis záznamu historie |
NOTES |
text poznámky |
SWINST |
poznámka k záznamu o historii instalace |
|
@detproductname |
zjištěný název softwarového produktu, např. název operačního systému včetně verze servisního balíčku |
@detproductver |
zjištěná verze softwarového produktu (podrobná hodnota verze produktu, např. 5.23) |
@detlastdate |
datum poslední detekce softwaru počítače |
@flags |
typy záznamů historie objektů (Pro dotazování na typy záznamů historie objektů použijte speciální konstanty, viz Konstanty.) |
@invnumber |
inventární číslo přidělené licence |
@invoice |
označení dokladu o nákupu přidělené licence (viz Přehled licencí a instalací, sloupec dokladů) |
@language |
jazyková verze softwarového produktu |
@licname |
přesný název licence softwarového produktu |
@nodeid |
jedinečný identifikátor (číslo) objektu ve stromu. Vhodné pro řazení - vyhledání posledních nových objektů v inventáři. |
@notice |
poznámky k objektu |
@object |
název objektu |
@objectpath |
cesta k objektu ve stromu |
@producer |
výrobce softwarového produktu |
@producer |
název softwarového produktu |
@property |
jakákoli vlastnost objektu |
@serialnumber |
sériové číslo softwarové licence |
@subject |
název poznámky |
@swfrompack |
software je ze softwarového balíku |
@type |
typ softwarového produktu (např. vyžadující licenci, zkušební verzi, ...) |
@user |
autor poznámky, záznamu historie objektu nebo instalace sw produktu |
Speciální hodnoty lze použít pouze v dotazech typu HISTORY, NOTICE nebo SWINST.
Column_Operators
Zadejte jeden nebo více operátorů. Jednotlivé operátory se oddělují pouze mezerou.
Operátor |
Popis |
SUM |
součet hodnot |
COUNT |
počet položek |
AVG |
průměrná hodnota |
MIN |
minimální hodnota |
MAX |
maximální hodnota |
Příklad 9. Dotazovací jazyk - operátory sloupců
Zjistěte průměrnou kapacitu paměti počítačů.
SELECT @object, S1.Size AVG
WHERE @class LIKE "Computer*"
WITH
SELECT AS S1 WHERE @class="RAM"
ENDWITH
Na konci tiskové sestavy bude ve sloupci Velikost uveden průměr všech hodnot.
Filtr
Filtr je logický výraz určující podmínku. Podmínka se vyhodnocuje pro každý objekt. Objekt je ve výsledku dotazu vybrán, pokud je pro něj podmínka splněna.
kde:
Srovnání |
Popis |
= |
rovnost |
like |
výskyt podřetězce |
<> |
nerovnost |
< |
menší |
> |
větší |
<= |
menší nebo stejný |
>= |
větší nebo stejný |
Funkce OWN() je splněna, pokud je vlastnost vlastní vlastností objektu. Funkce INHERITED() je splněna v případě zděděných vlastností.
INHERITED([User]) AND [User]="Veronica Palmer"
Příklad 10. Dotazovací jazyk - filtr
Pro vyhledání všech tiskáren HP použijeme filtr, který omezí seznam tiskáren na tiskárny, jejichž název začíná dvojicí znaků "HP".
@class="Printer" AND Name LIKE "HP*"
Příklad 11. Jazyk dotazu - filtr
Vyhledání všech tiskáren s pamětí RAM menší než 64 MB.
Konstantní
Konstantou může být reálné číslo nebo textový řetězec. V textovém řetězci lze pro zadání libovolného počtu znaků použít hvězdičkový zápis "*".
Tabulka 1. Konstanty - typy záznamů historie
Konstanta |
Popis |
H_MOVEDEST |
Přesunul jsem objekt "x" |
H_MOVESRC | odsud jsem přesunul objekt "x | "
H_TO |
objekt přesunut do "x" |
H_INSERTNEW | vložen nový objekt "x | "
H_TONEW |
objekt vytvořen v "x" |
H_SCANMMOVEDEST |
Přesunul jsem objekt "x" - pomocí skeneru |
H_SCANMOVESRC |
objekt "x" - přesunut odsud skenerem |
H_SCANTO |
objekt přesunut do "x" - skenerem |
H_SCANINSERTNEW |
nový objekt vložený do "x" - skenerem |
H_SCANTONEW |
objekt vytvořen v "x" - skenerem |
Tabulka 2. Konstanty - typy softwarových produktů
Konstanty |
Popis |
SW_NEEDSLIC |
komerční - uživatel si musí zakoupit licenci, aby mohl produkt používat |
SW_NOLIC |
freeware (nevyžaduje licenci) - produkt lze používat bez licence |
SW_TRIALLIC |
shareware/trial - produkt lze testovat bez licence |
NULL |
bez licence - nelegálně nainstalovaný |
Tabulka 3. Konstanty - kategorie softwarových produktů
Konstanty |
Popis |
SW_OS |
softwarový produkt je operační systém |
Příklad 12. Dotazovací jazyk - konstanty
Najděte všechny paměti RAM menší než 64 MB.
Příklad 13. Jazyk dotazu - konstanty
Vyhledejte záznamy o historii objektů odstraněných (přesunutých) po 1. lednu 2001.
@date>"1.1.2001" AND ( @flag=H_MOVESRC OR @flags=H_SCANMOVESRC )
Příklad 14. Jazyk dotazu - konstanty
Vyhledejte všechny freewarové softwarové produkty.
Příklad 15. Jazyk dotazu - konstanty
Vyhledat všechny neautorizované softwarové produkty - nelegálně nainstalované
Příklad 16. Jazyk dotazu - konstanty
Vyhledejte všechny operační systémy nainstalované po 1. lednu 2001.
@category=SW_OS AND @date>"1.1.2001"
S ... ENDWITH
Mezi klíčová slova WITH a ENDWITH se zapíše seznam poddotazů. Jednotlivé poddotazy se oddělují čárkami.
Klauzule HAVING určuje, které poddotazy v seznamu musí obsahovat alespoň jeden objekt, aby byl kontrolní objekt vybrán.
Příklad 17. Jazyk dotazů - poddotazy
Chceme vypsat seznam počítačů, které nemají pevný disk.
SELECT AS "Computers without HDD"=S0 S0.@object
WHERE @class LIKE "Computer*"
WITH
SELECT AS HDD WHERE @class="Hard disk"
HAVING NOT HDD
ENDWITH
GROUP BY
Určuje sloupec, podle kterého budou nalezené položky seskupeny. Sloupec musí být uveden v seznamu sloupců za klíčovým slovem SELECT.
Příklad 18. Jazyk dotazu - GROUP BY
Chceme vypsat seznam počítačů a seskupit je podle položky Podlaha.
SELECT AS "Computers grouped by Floor"=S0 @object, Floor
WHERE @class LIKE "Computer*"
GROUP BY Floor
ORDER BY
Slouží k seřazení hodnot sloupců ve výstupní sestavě. Priorita řazení je určena pořadím sloupců za klíčovým slovem ORDER BY. Všechny sloupce, které mají být seřazeny, musí být uvedeny v seznamu sloupců za klíčovým slovem SELECT.
Modifikátory ASC a DESC určují směr řazení:
- ASC - vzestupně
- DESC - sestupně
Příklad 19. Jazyk dotazu - ORDER BY
Seznam počítačů seřazený podle sloupců Podlaha, Uživatel.
SELECT AS "Computers sorted by floor and user"=S0
S0.@object, User, Floor
WHERE @class LIKE "Computer*"
ORDER BY Floor, User
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.