Dotazy
Dotazy slouží k pokročilému vyhledávání údajů ve stromu a v evidenci instalací a k vytváření tabulkových tiskových sestav.
Dotazy se zapisují textově v jazyce, který je podobný dotazovacímu jazyku SQL. Oproti 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 pro vyhledání všech počítačů ve stromu.
- V hlavní nabídce vyberte příkaz Dotaz - Nový.
- Na obrazovce se otevře okno Průvodce vytvořením dotazu - krok 1 , ve kterém máme vybrat řídící objekt
dotazu. V našem jednoduchém příkladu je řídícím objektem zkrátka objekt, který hledáme, tj. počítač. Rozbalte tedy objekt počítačové sestavy a vyberte v něm objekt počítač. Potom pokračujte tlačítkem
Další.
- Tím se dostaneme na druhou stranu průvodce, tj. do okna Průvodce vytvořením dotazu - krok 2 .
Zde vybereme údaje, které se zobrazí ve výsledku dotazu o každém nalezeném objektu. V seznamu vpravo vyberte např. vlastnosti Název počítače a Datum nákupu.
- Tlačítkem Další se otevře strana 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 pro vyhledávání. V našem případě nemusíme nic měnit a rovnou pokračovat tlačítkem Další.
- Na straně Průvodce vytvořením dotazu - krok 4 můžete upravit řazení a seskupování položek ve výsledku
dotazu. Opět můžeme přejít dál tlačítkem Další.
- Na straně Průvodce vytvořením dotazu - krok 5 zadejte nadpis tiskové sestavy a stiskněte tlačítko
Náhled.
- Na obrazovce se otevře okno Parametry dotazu , ve kterém ještě můžete omezit rozsah stromu pro hledání.
- Potom stiskněte tlačítko OK a na obrazovce se otevře tisková sestava s výsledkem dotazu v okně HTML Dokument.
- Zavřete okno s tiskovou sestavou. Tím se vrátíme do průvodce, kde stiskněte tlačítko Dokončit.
- Na obrazovce se otevře okno Vyhledávání - Dotaz, kde je vidět textový zápis dotazu, který jsme právě vytvořili.
Tlačítkem Uložit ho můžete uložit do souboru, odkud je možné jej později načíst tlačítkem Načíst.
- Stiskněte tlačítko Vyhodnotit.
- Znovu se otevře okno Parametry dotazu jako při zobrazení náhledu. Po jeho potvrzení se dotaz vyhodnotí a výsledek se
zobrazí v okně Výsledky vyhledávání, ve kterém můžete tlačítkem Tisková sestava
zobrazit tiskovou sestavu, nebo tlačítkem Export výsledek uložit do textového souboru, který lze dále zpracovat např. v programu Microsoft Excel.
Syntaxe dotazovacího jazyka
Dotaz=
[PARAMETERS Parametr [, Parametr]...]
SELECT [Dotaz_Typ] [AS [Nadpis=] Dotaz_Id]
[DOWN | UP | DEEP | SHALLOW | NEAREST | ALL]
[Sloupec_Nadpis [, Sloupec_Šířka %]=][Dotaz_Id.] Vlastnost [
Sloupec_Operátory]
[, [Sloupec_Nadpis [, Sloupec_Šířka %]=] [Dotaz_Id.]Vlastnost [
Sloupec_Operátory] ...]
[WHERE
[NOT] Filtr [AND | OR [NOT] Filtr ...]]
[WITH
Dotaz[, Dotaz ...]
[HAVING [NOT] Dotaz_Id [AND | OR [NOT] Dotaz_Id ...]]
ENDWITH]
[GROUP BY
[Dotaz_Id.]Vlastnost]
[ORDER BY
[Dotaz_Id.]Vlastnost [ASC | DESC]
[, [Dotaz_Id.] Vlastnost [ASC | DESC] ...]]
Symbol |
Význam |
| |
nebo |
[ ] |
nepovinné |
... |
opakování |
Parametr
Parametr dotazu je datová hodnota, kterou uživatel zadává v okamžiku vyhodnocení dotazu.
Parametr= Název_Parametru Typ_Parametru
kde:
Název_Parametru
Identifikuje parametr. Jednotlivé názvy 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, je nutné jej zapsat do hranatých závorek.
Typ_Parametru
Typ_Parametru |
typ |
T_TEXT |
text |
T_DOUBLE |
reálné číslo |
T_DATETIME |
datum, čas |
Příklad 1. Dotazovací jazyk - parametr
Chceme vypsat zásahy do počítačů v zadaném časovém intervalu. Program se před vyhodnocením dotazu zeptá na hodnoty parametrů Od data a Do data.
PARAMETERS [Od data] T_DATETIME, [Do data] T_DATETIME
SELECT AS "Přehled zásahů"=S "Sestava"=@object
WHERE @class="Počítač"
WITH
SELECT HISTORY AS S1 "Provedl"=@user,"Popis"=@description
WHERE @date>=[Od data] AND @date<=[Do data]
HAVING s1
ENDWITH
Dotaz_Typ
Dotaz_Typ |
Popis |
HISTORY |
dotaz na položky historie objektu |
NOTICE |
dotaz na poznámky objektu |
SWINST |
dotaz na nainstalované softwarové produkty |
Dotaz typu HISTORY, NOTICE nebo SWINST může být použit pouze jako poddotaz a nesmí obsahovat další poddotazy. Navíc dotaz typu SWINST má význam pouze pokud je poddotazem dotazu, který vrací
objekty druhu "počítač".
Příklad 2. Dotazovací jazyk - typ dotazu
Chceme vypsat všechny poznámky objektů počítač seřazené chronologicky.
SELECT AS "Poznámky objektů"=S0 WHERE @class="Počítač"
WITH
SELECT NOTICE AS S1 @date, @user, @description
ENDWITH
ORDER BY S1.@date
Příklad 3. Dotazovací jazyk - typ dotazu
Chceme vypsat přehled všech počítačů a nainstalovaných operačních systémů. Dále požadujete, aby výsledek byl seskupen podle nainstalovaných operačních systémů.
SELECT AS "Přehled nainstalovaných operačních systémů"=S
"OS"=S1.@product, "Počítač"=@object, "Inventární číslo"=[inventární číslo],
"Uživatel"=[uživatel]
WHERE @class="Počítač"
WITH
SELECT SWINST AS S1
WHERE @category=SW_OS
HAVING S1
ENDWITH
GROUP BY S1.@product
Nadpis
Nadpis výstupní sestavy.
Příklad 4. Dotazovací jazyk - nadpis
Chceme vypsat všechny počítače. V hlavičce sestavy bude text "Počítače".
SELECT AS "Počítače"=S0 @object
WHERE @class="Počítač"
Dotaz_Id
Identifikátor dotazu nebo poddotazu v sekci WITH. Pokud se ve dvou poddotazech vyskytují vlastnosti se stejným názvem, můžete k jejich rozlišení použít zápis Dotaz_Id.Vlastnost,
např. "S0.Kapacita". V případě, že je identifikátor dotazu složen z více slov, zapište ho do hranatých závorek.
Příklad 5. Dotazovací jazyk - identifikátor dotazu
Chceme vypsat všechny počítače a zajímají vás pouze údaje: Název počítače, Klávesnice, Monitor. Vlastnosti Název z objektů monitor a klávesnice je třeba rozlišit identifikátorem
poddotazu.
SELECT AS S0 S0.@object, S1.Název, S2.Název
WHERE @class="Počítač"
WITH
SELECT AS S1 WHERE @class="Klávesnice",
SELECT AS S2 WHERE @class="Monitor"
ENDWITH
Modifikátory DOWN, UP, DEEP, SHALLOW, NEAREST, ALL
Modifikátory určují způsob vyhledávání objektů v poddotazech v sekci WITH.
Modifikátor |
Popis |
DOWN |
prohledávání směrem dolů, tj. prohledávání podstromu řídícího objektu (implicitní hodnota) |
UP |
prohledávání směrem nahoru, tj. prohledávají se všechny objekty na cestě ke kořeni stromu |
DEEP |
hledat ve všech potomcích řídícího objektu (implicitní hodnota) |
SHALLOW |
hledat pouze v přímých potomcích řídícího objektu (ne v potomcích potomků) |
NEAREST |
při nalezení nejbližšího objektu ukončit prohledávání do hloubky (implicitní hodnota) |
ALL |
prohledat celý podstrom řídícího objektu |
Modifikátory NEAREST a ALL smysl pouze v kombinaci s modifikátorem DEEP, který zajistí prohledávání do hloubky.
Příklad 6. Dotazovací jazyk - modifikátory
Chceme vypsat počítačové sestavy a zajímají vás pouze ú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 řídící objekt
určíte objekt počítač PC.
- Sestava 2
- PC
- paměť RAM
- zvuková karta
- HDD
Z příkladu dvou počítačových sestav je patrné, že v počítači 2 je ve zvukové kartě umístěna paměť. Abychom zabránili výpisu této paměti, je v dotazu S2 použit modifikátor SHALOW, který
zajistí prohledávání pouze na úrovni objektu PC.
Modifikátor UP použitý v dotazu S1 zajistí nalezení objektu Sestava, který se nachází nad objektem PC (počítač).
SELECT AS S0 S1.@object, S2.@object, S3.@object
WHERE @class="Počítač"
WITH
SELECT AS S1 UP WHERE @class="Sestava",
SELECT AS S2 DOWN SHALLOW WHERE @class="paměť RAM",
SELECT AS S3 DOWN WHERE @class="Pevný disk"
ENDWITH
Sloupec_Nadpis
Určuje nadpis sloupce ve výstupní sestavě.
Příklad 7. Dotazovací jazyk - nadpis sloupce
Chceme vypsat počítače a zajímají vás údaje: Počítač, Pevný disk, Paměť RAM, Procesor. Sloupce ve výstupní sestavě budou mít nadpisy: Počítač, HDD, RAM, CPU.
SELECT AS S0 "Počítač"=S0.@object, "HDD"=S1.@object,
"RAM"=S2.@object, "CPU"=S3.@object
WHERE @class="Počítač"
WITH
SELECT AS S1 WHERE @class="Pevný disk",
SELECT AS S2 WHERE @class="Paměť RAM",
SELECT AS S3 WHERE @class="Procesor"
ENDWITH
Pokud byste nespecifikovali žádné nadpisy sloupců, sloupce by byly nadepsány: S1.Název, S2.Název, S3.Název.
Sloupec_Šířka
Specifikuje šířku sloupce ve výstupní sestavě. Šířka se zadává v procentech vzhledem k šířce celé sestavy.
Příklad 8. Dotazovací jazyk - šířka sloupce
Chceme vypsat počítače a zajímají vás údaje: Název sestavy, Uživatel, Poschodí.
Dále vyžadujeme, aby sloupec Název sestavy měl název Počítač a šířku 40% z šířky tiskové strany a sloupec Poschodí 20% z šířky strany.
SELECT "Počítač",40%=@object, Uživatel, 20%=Poschodí
WHERE @class="Počítač"
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, je nutné jej zapsat do hranatých závorek.
Jako Vlastnost můžete použít také tyto speciální hodnoty:
Vlastnost |
Popis |
@authorized |
instalace software na počítači je potvrzena nebo je počítači přidělena licence |
@category |
kategorie softwarového produktu (např. operační systém) |
@cdkey |
CD klíč softwarového produktu |
@class |
druh objektu |
@date |
datum záznamu historie, poznámky objektu nebo instalace sw produktu |
@description |
Typ dotazu (Dotaz_Typ) |
Význam vlastnosti @description |
HISTORY |
popis záznamu historie |
NOTICE |
text poznámky |
SWINST |
poznámka u záznamu historie instalací |
|
@detproductname |
detekovaný název softwarového produktu např. název operačního systému včetně verze service packu |
@detproductver |
detekovaná verze softwarového produktu (detailní hodnota verze produktu např. 5.23) |
@detlastdate |
datum poslední softwarové detekce počítače |
@flags |
typy záznamu historie objektu (Pro dotazování na typy záznamů historie objektů použijte speciální konstanty viz Konstanta.) |
@invnumber |
inventární číslo přidělené licence |
@invoice |
označení dokumentu o nákupu přidělené licence (viz Přehled licencí a instalací,
sloupec dokument) |
@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é např. pro řazení - zjištění posledních nových objektů v evidenci. |
@notice |
poznámky objektu |
@object |
název objektu |
@objectpath |
cesta k objektu ve stromu |
@producer |
výrobce softwarového produktu |
@product |
název softwarového produktu |
@property |
libovolná vlastnost objektu |
@serialnumber |
sériové číslo softwarové licence |
@subject |
titulek poznámky |
@swfrompack |
software je ze softwarového balíku |
@type |
typ softwarového produktu (např. vyžadující licenci, trial, ...) |
@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.
Sloupec_Operátory
Uveďte 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 sloupce
Zjištění průměrné kapacity paměti v počítačů.
SELECT @object, S1.Velikost AVG
WHERE @class="počítač"
WITH
SELECT AS S1 WHERE @class="Paměť 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 vybrán do výsledku dotazu v případě, že je pro něho podmínka splněna.
Filtr= Vlastnost Porovnání Konstanta | OWN(Vlastnost) | INHERITED(Vlastnost)
kde:
Porovnání
Porovnání |
Popis |
= |
rovnost |
like |
výskyt podřetězce |
<> |
nerovnost |
< |
menší |
> |
větší |
<= |
menší nebo rovno |
>= |
větší nebo rovno |
Funkce OWN() je splněna v případě, že vlastnost je vlastní vlastností objektu. Funkce INHERITED() je splněna pro zděděné vlastnosti.
Příklad 10. Dotazovací jazyk - filtr
Pro vyhledání všech tiskáren značky HP použijeme filtr omezující seznam tiskáren na tiskárny, jejichž název začíná dvojicí znaků "HP".
@class="Tiskárna" AND Název LIKE "HP*"
Příklad 11. Dotazovací jazyk - filtr
Vyhledání všechny pamětí RAM menších než 64 MB.
@class="paměť RAM" AND Velikost<64
Konstanta
Konstanta může být reálné číslo nebo textový řetězec. V textovém řetězci lze použít hvězdičkovou notaci ‘*‘ pro určení libovolného počtu znaků.
Tabulka 1. Konstanty - typy záznamů historie
Konstanta |
Popis |
H_MOVEDEST |
sem přesunut objekt "x" |
H_MOVESRC |
odtud přesunut objekt "x" |
H_TO |
objekt přesunut do "x" |
H_INSERTNEW |
sem vložen nový objekt "x" |
H_TONEW |
objekt vytvořen v "x" |
H_SCANMMOVEDEST |
sem přesunut objekt "x" - scannerem |
H_SCANMOVESRC |
odtud přesunut objekt "x" - scannerem |
H_SCANTO |
objekt přesunut do "x" - scannerem |
H_SCANINSERTNEW |
sem vložen nový objekt "x" - scannerem |
H_SCANTONEW |
objekt vytvořen v "x" - scannerem |
Tabulka 2. Konstanty - typy softwarových produktů
Konstanta |
Popis |
SW_NEEDSLIC |
komerční - uživatel musí zakoupit licenci k používání produktu |
SW_NOLIC |
freeware (nevyžaduje licenci) - produkt je možné používat bez licence |
SW_TRIALLIC |
shareware/trial - produkt je možné vyzkoušet bez licence |
NULL |
nepovolený - nelegálně nainstalovaný |
Tabulka 3. Konstanty - kategorie softwarových produktů
Konstanta |
Popis |
SW_OS |
softwarový produkt je operační systém |
Příklad 12. Dotazovací jazyk - konstanty
Vyhledání všech pamětí RAM menších než 64 MB.
@class=”paměť RAM” AND Velikost<64
Příklad 13. Dotazovací jazyk - konstanty
Vyhledání záznamů historie odstraněných (přesunutých) objektů po 1.1.2001.
@date>"1.1.2001" AND ( @flag=H_MOVESRC OR @flags=H_SCANMOVESRC )
Příklad 14. Dotazovací jazyk - konstanty
Vyhledání všech freewarových softwarových produktů.
@type=SW_NOLIC
Příklad 15. Dotazovací jazyk - konstanty
Vyhledání všech nepovolených softwarových produktů - nelegálně nainstalovaných
@licname=NULL
Příklad 16. Dotazovací jazyk - konstanty
Vyhledání všech operačních systému nainstalovaných po 1.1.2001.
@category=SW_OS AND @date>"1.1.2001"
WITH ... ENDWITH
Mezi klíčová slova WITH a ENDWITH se zapisuje seznam poddotazů. Jednotlivé poddotazy se oddělují čárkami.
Klauzule HAVING určuje, které poddotazy v seznamu musí obsahovat alespoň jeden objekt proto, aby byl řídící objekt vybrán.
Příklad 17. Dotazovací jazyk - poddotazy
Chceme vypsat počítače, které nemají pevný disk.
SELECT AS "Počítače bez HDD"=S0 S0.@object
WHERE @class="Počítač"
WITH
SELECT AS HDD WHERE @class="Pevný disk"
HAVING NOT HDD
ENDWITH
GROUP BY
Určuje sloupec, podle kterého se budou nalezené položky seskupovat. Sloupec musí být uveden v seznamu sloupců za klíčovým slovem SELECT.
Příklad 18. Dotazovací jazyk - GROUP BY
Chceme vypsat počítače a seskupit je podle Poschodí.
SELECT AS "Počítače seskupené podle poschodí"=S0 @object, Poschodí
WHERE @class="Počítač"
GROUP BY Poschodí
ORDER BY
Slouží k řazení hodnot sloupců ve výstupní sestavě. Priorita řazení je dána pořadím sloupců za klíčovým slovem ORDER BY. Všechny sloupce, podle kterých se bude řadit, 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. Dotazovací jazyk - ORDER BY
Seznam počítačů seřazený podle sloupců Poschodí, Uživatel.
SELECT AS "Počítače seřazené podle poschodí a uživatele"=S0
S0.@object, Uživatel, Poschodí
WHERE @class="Počítač"
ORDER BY Poschodí, Uživatel
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|