Skip Navigation LinksALVAO 10.4ALVAO Asset ManagementVyhledávání, reportování a analýza datDotazy Skip Navigation Links.


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.

  1. V hlavní nabídce vyberte příkaz Dotaz - Nový.
  2. 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ší.
  3. 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.
  4. 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ší.
  5. 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ší.
  6. Na straně Průvodce vytvořením dotazu - krok 5 zadejte nadpis tiskové sestavy a stiskněte tlačítko Náhled.
  7. Na obrazovce se otevře okno Parametry dotazu , ve kterém ještě můžete omezit rozsah stromu pro hledání.
  8. Potom stiskněte tlačítko OK a na obrazovce se otevře tisková sestava s výsledkem dotazu v okně Tisková sestava.
  9. Zavřete okno s tiskovou sestavou. Tím se vrátíme do průvodce, kde stiskněte tlačítko Dokončit.
  10. 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.
  11. Stiskněte tlačítko Vyhodnotit.
  12. 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

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_Operátory] ...]

[WHERE 
[NOT] Filtr [AND | OR [NOT] Filtr ...]]

[WITH 
 Dotaz[, Dotaz ...] 
[HAVING [NOT] Dotaz_Id ...]]
ENDWITH]

[GROUP BY 
[Vlastnost]

[ORDER BY 
[Vlastnost [ASC | DESC] 
[, [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 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 1
    • PC
      • paměť RAM
      • HDD
  • Sestava 2
    • PC
      • paměť RAM
      • zvuková karta
        • paměť RAM
      • 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.

Filtr= 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.

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ů.

@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 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.