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ě
Tisková sestava.
- 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 dotazu, 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
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:
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 |
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 LIKE "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č".
Poznámka:
Dotaz typu HISTORY a NOTICE nepracuje s
odstraněnými (skrytými) záznamy deníku.
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 LIKE "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 LIKE "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 LIKE "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 LIKE "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 LIKE "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 LIKE "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 LIKE "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 LIKE "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.
kde:
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.
INHERITED([Uživatel]) AND [Uživatel]="Veronika Vlídná"
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ů.
Příklad 15. Dotazovací jazyk - konstanty
Vyhledání všech nepovolených softwarových produktů - nelegálně
nainstalovaných
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 LIKE "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 LIKE "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 LIKE "Počítač*"
ORDER BY Poschodí, Uživatel
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.