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


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.

  1. V hlavní nabídce zvolte možnost Dotaz - Nový.
  2. 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ší.
  3. 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.
  4. 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ší.
  5. 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ší.
  6. Na stránce Průvodce vytvořením dotazu - Krok 5 zadáme název tiskové sestavy a stiskneme tlačítko Náhled.
  7. Na obrazovce se otevře okno Parametry dotazu, kde můžete dále omezit rozsah vyhledávacího stromu.
  8. Poté stiskněte tlačítko OK a na obrazovce se otevře tisková sestava s výsledkem dotazu v poli Tisková sestava.
  9. Okno tiskové sestavy zavřete. Tím se vrátíte do průvodce, kde stiskněte tlačítko Dokončit.
  10. 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.
  11. Stiskněte tlačítko Vyhodnotit.
  12. 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

Query
[PARAMETERS Parameter [, Parameter]...]

SELECT [Query_Type] [AS [Title=] Dotaz_Id]
[DOWN | UP | DEEP | SHALLOW | NEAREST | ALL]
[Column_Title [, Column_Width %]=][Query_Id.] Property [
 Column_Operators]
[, [Column_Title [, 
 Column_Operators] ...]

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

[WITH
Question[Question ...]
[HAVING [NOT Query_Id ...]]
ENDWITH]

[GROUP BY 
[Property]

[ORDER BY 
[Property [ASC | DESC] 
[, [Property [ASC | DESC] ...]]
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:

Parameter_Name

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

  • Sestava 1
    • PC
      • RAM
      • HDD
  • Sada 2
    • PC
      • RAM
      • zvuková karta
        • RAM
      • HDD

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.

Filter= Property)

kde:

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

@class="RAM" AND Size<64

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

odsud jsem " vložen "
Konstanta Popis
H_MOVEDEST Přesunul jsem objekt "x"
H_MOVESRCpřesunul objekt "x
H_TO objekt přesunut do "x"
H_INSERTNEWnový 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.

@class="RAM" AND Size<64

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.

@type=SW_NOLIC

Příklad 15. Jazyk dotazu - konstanty

Vyhledat všechny neautorizované softwarové produkty - nelegálně nainstalované

@licname=NULL

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.