Jazyk MQL

 
V tomto příspěvku se dozvíme:

Úvod

Filtrovali jste někdy produkty nebo vytvářeli výběry v MERGADO Editoru na stránce Produkty?

image

Nebo jste třeba cílili na hodnoty parametrů v rámci cesty k elementu?

Pokud jste odpověděli “ano” alespoň na jednu z výše uvedených otázek, pak můžete s jistotou říct, že jste se setkali právě s MQL.

Co je MQL?

MQL je zkratkou pro MERGADO Query Language (česky MERGADO dotazovací jazyk). Jedná se o jazyk, jehož autorem jsme my (MERGADO) a pomocí kterého se zapisují podmínky.

Co je podmínka (v MQL)?

Když si filtrujeme produkty na stránce Produkty, filtrujeme podle podmínky. Takže zadáme podmínku, podle které se má filtrovat, a po vyhledání produktů se nám zobrazí pouze takové produkty, které splňují námi zadanou podmínku.

:information_source:  V MERGADO Editoru existují 2 způsoby zobrazení podmínek a oba dva způsoby jsou ve výsledku v MQL:

1. Jednoduchý formulář výběrů, nazývaný též Oneliner, zobrazuje podmínku na jednom řádku se třemi poli pro naklikání podmínky.



2. Podmínka se dá zobrazit i jako prostý text. Tímto způsobem zobrazuje podmínku např. formulář pro Vlastní MQL dotaz.

image

Nebo se toto zobrazení podmínky může vyskytovat i v různých cestách k elementu.

Oba způsoby zobrazení podmínky jsou si rovnocenné. Tedy např. pokud si v Onelineru vytvoříme podmínku ITEM_ID = 43 nebo ve formuláři pro Vlastní MQL dotaz napíšeme ITEM_ID = 43, výsledek po vyhledání produktů bude totožný.

Jelikož je MQL jazyk, tak i MQL, jako běžné jazyky, má svoji slovní zásobu (termíny, které se dají používat v podmínkách) a gramatiku (soubor pravidel, jak se podmínky píší).

Slovní zásoba a gramatika MQL

V této sekci si vysvětlíme všechny možnosti a omezení MQL. V průběhu budeme hojně používat přirovnání k českému jazyku – podmínka v MQL má totiž jisté podobnosti s jednoduchou větou v českém jazyce.

Podmínka se skládá ze 3 částí

Podmínka je základním stavebním prvkem MQL a skládá se ze 3 částí:

image

Do 1. části se píše cesta k elementu - v českém jazyce si můžeme představit podmět.

Do 2. části se píše operátor - v českém jazyce si můžeme představit přísudek. K dispozici máme následující operátory:

Operátor Význam
CONTAINS obsahuje text
NOT CONTAINS neobsahuje text
= je rovno
!= není rovno
~ obsahuje regulární výraz
!~ neobsahuje regulární výraz
< je menší
<= je menší nebo rovno
> je větší
>= je větší nebo rovno
IN je obsažen ve výčtu
NOT IN není obsažen ve výčtu

 
Do 3. části se píše buď hodnota (číselná/textová), cesta k elementu, nebo regulární výraz – v českém jazyce si můžeme představit třeba předmět (nebo cokoliv mimo podmět a přísudek). Textová hodnota a regulární výraz se musí psát do uvozovek, např. "tričko". Číselná hodnota se do uvozovek psát nemusí.

:information_source:  Uvozovky musí být ty "rovné" a ne ty “křivé”, jinak podmínka nebude validní. Křivost uvozovek může být způsobena např. formátováním různých editorů a prohlížečů v případě, když bychom danou cestu k elementu odněkud kopírovali (třeba z našeho fóra).

První část podmínky nám říká, “kam koukáme” v rámci produktů – koukáme do elementu (a jeho hodnot) zacíleného v dané cestě. 2. a 3. část podmínky nám společně říkají, “jak koukáme” na element zacílený v 1. části podmínky – koukáme skrze takové “brýle”, které nám umožňují vidět jenom takové hodnoty elementu, které vyhovují podmínce. Např. s podmínkou ITEM_ID = 43 se vyhledají pouze takové produkty, které mají v elementu ITEM_ID hodnotu rovnu 43.

V 1. a 3. části se při použití cesty k elementu musí elementy psát do hranatých závorek [ ], pokud názvy daných elementů obsahují znaky jiné než písmena bez diakritiky a číslice, např. mezeru. Výjimkou jsou speciální atributy a zobrazení Oneliner.

:information_source:  Hranaté závorky [ ] se na české klávesnici píší klávesovými zkratkami pravý Alt + F a pravý Alt + G nebo také pravý Alt + ú a pravý Alt + ).

Spojování podmínek

Podmínky se dají spojovat (podobně jako věty se dají spojovat do souvětí) pomocí spojovacích operátorů (podobně v češtině spojky). V MQL existují 2 takové operátory:

  • AND, které znamená “a zároveň”,
    např. ITEM_ID = 43 AND DESCRIPTION CONTAINS "tričko" znamená, že hledáme produkty, které mají ITEM_ID rovnu 43 a zároveň DESCRIPTION obsahující text “tričko”, tedy produkt musí vyhovovat oběma podmínkám.

  • OR, které znamená “nebo”,
    např. ITEM_ID = 43 OR DESCRIPTION CONTAINS "tričko" znamená, že hledáme produkty, které mají ITEM_ID rovnu 43 nebo DESCRIPTION obsahující text “tričko”, tedy stačí, aby produkt vyhovoval pouze jedné z podmínek.

Ukažme si rozdíl na příkladu. Mějme následující data:

Když do formuláře napíšeme ITEM_ID = 43 AND DESCRIPTION CONTAINS "tričko", nevyhledá se nám žádný produkt, jelikož produkt s ITEM_ID rovnu 43 nemá zároveň DESCRIPTION obsahující text “tričko”.

A když do formuláře napíšeme ITEM_ID = 43 OR DESCRIPTION CONTAINS "tričko", vyhledají se nám 2 produkty.

:information_source:  Operátory spojovací i nespojovací jde psát i malými písmeny, např. “and” nebo “not in”. Nicméně konvence je psát je velkými písmeny.

Seskupování podmínek

Co kdybychom si chtěli vyfiltrovat takové produkty, které mají v popisu “tričko” nebo mají parametry Barva a Velikost? Podmínky pak napíšeme takto:

:bulb: Pro přehlednost doporučujeme podmínky s více spojeními a seskupeními psát podobně nebo přímo tak, jako jsou v předchozím obrázku. Hlavně se vyvarujte psaní všech podmínek na jeden řádek. Budete se pak v podmínkách lépe orientovat.

Do slovní zásoby nám tímto přibývají kulaté závorky ( ). Do kulatých závorek seskupujeme podmínky, které se mají vyhodnotit společně. Protože kdybychom si podmínky výše napsali bez kulatých závorek,

nevíme, jestli prostřední podmínka PARAM | PARAM_NAME = "Barva" patří ke spojovacímu operátoru OR (před podmínkou), nebo ke spojovacímu operátoru AND (za podmínkou). Tedy buď jestli chceme vyhledat produkt s DESCRIPTION obsahující “tričko” nebo mající parametr Barva a k tomu daný produkt musí zároveň mít i parametr Velikost, anebo chceme vyhledat produkt s DESCRIPTION obsahující “tričko” nebo má oba parametry Barva a Velikost zároveň.

:information_source:  Podmínky v Onelineru nebo ve formuláři pro Vlastní MQL dotaz dohromady tvoří dotaz.

Praktické zajímavosti o MQL

  1. V rámci MQL je možné pracovat i se základními matematickými operacemi (sčítání +, odečítání -, násobení * a dělení /).

    Např. nebo

  2. V MQL může operátor NOT fungovat samostatně. Slouží k negaci podmínky nebo dotazu. Např. ITEM_ID != 43 je to samé jako NOT ( ITEM_ID = 43 ).



    Operátor NOT využijeme jako negaci hlavně u komplikovanějších dotazů, kdy budeme mít vytvořený dotaz a budeme chtít najít právě opak zadaného dotazu. Celý dotaz pak stačí strčit jednoduše do kulatých závorek operátoru NOT.

  3. Tvoření podmínek je velice podobné výrokové logice.

Syntaktické chyby

Tak jako v češtině se dají dělat pravopisné nebo gramatické chyby, tak v MQL se dají dělat syntaktické chyby. Pokud uděláme v našem zápisu nějakou syntaktickou chybu, většinou nás na to MERGADO Editor upozorní. Jako příklad uvádíme podmínku se špatným operátorem nebo hodnotou:

:bulb: Přečtěte si příspěvek přímo věnovaný chybám ve formuláři pro Vlastní MQL dotaz.

K čemu slouží MQL?

Vytváření výběrů

Jak už zaznělo párkrát v průběhu celého tohoto příspěvku, MQL slouží k zápisu podmínek, které pak používáme na stránce Produkty pro filtrování produktů a pro vytváření jejich výběrů, jež potom používáme v pravidlech. Pomocí MQL můžeme definovat jakékoliv podmínky, které potřebujeme. Pokročilejší znalost MQL nám otevírá neomezené možnosti práce s daty.

Využití v Element-Path

Podmínky (napsané v MQL) používáme také jako upřesňovací prvek v podmínkách v cestě k elementu.

:information_source:  Existují podmínky v MQL a podmínky v cestě k elementu. Významově se jedná o dvě různé věci, i když se nazývají stejně. Podmínka v MQL se skládá ze 3 částí, jak jsme si popisovali výše, a podmínka v cestě k elementu začíná a končí složenými závorkami { }. V podmínce v cestě k elementu se může vyskytovat více podmínek v MQL.



Do podmínky v cestě k elementu můžeme prakticky vložit cokoliv z MQL - spojené podmínky, seskupené podmínky, základní matematické operace nebo několikanásobné kombinace spojených a seskupených podmínek. Prostě cokoliv.

Příklady použití

V této sekci vám ukážeme příklady z reálné praxe od našich uživatelů.

Popis je prázdný

Chceme si vyfiltrovat produkty, které mají element DESCRIPTION bez hodnot. V Onelineru bude podmínka vypadat takto:

Ve formuláři pro Vlastní MQL dotaz takto:

A pokud bychom chtěli v pravidle zacílit na element DESCRIPTION, jenž nemá hodnotu, cesta bude následující: DESCRIPTION { @@VALUE = "" }. V cestě jsme použili speciální atribut @@VALUE. Nicméně tento postup nedoporučujeme, protože je mnohonásobně efektivnější si vytvořit výběr.

Kategorie neobsahuje nějaký text a zároveň Typ parametru obsahuje obdélník

Chceme si vyfiltrovat produkty, které obsahují v elementu CATEGORYTEXT hodnotu “sprchový kout” a jejichž parametr Typ obsahuje hodnotu “obdélník”. V Onelineru bude podmínka vypadat takto:

A ve formuláři pro Vlastní MQL dotaz takto:

Druhá kategorie

V pravidle Přepsat chceme zacílit na druhou hodnotu elementu CATEGORY zanořeného pod elementem CATEGORIES. V cestě k druhé hodnotě použijeme speciální atribut @@POSITION:

Další příklady

Uvádíme i další příklady z praxe.

Zobrazení Oneliner:

Formulář pro Vlastní MQL dotaz:

V pravidlech:

  • IMAGES | IMAGE { @@POSITION = 4 }
  • VARIANTS | VARIANT | STOCK | WAREHOUSES | WAREHOUSE { NAME = "Amoresa" } | VALUE
  • PARAM { PARAM_NAME = "Producent" } | VAL

Shrnutí

  • Co je MQL?
    MQL je zkratkou pro MERGADO Query Language (česky MERGADO dotazovací jazyk). Pomocí MQL se zapisují podmínky.
     
  • Co je podmínka (v MQL)?
    Podmínka je základním stavebním prvkem MQL a skládá se ze 3 částí:

    image

    Do 1. části se píše cesta k elementu, do 2. části se píše operátor a do 3. části se píše buď hodnota (číselná/textová), cesta k elementu, nebo regulární výraz.
     
  • Co se dá dělat s podmínkami a MQL?
    • Podmínky se dají spojovat pomocí spojovacích operátorů AND a OR.
    • Podmínky se dají sekupovat pomocí kulatých závorek. Víme tak, které podmínky se mají vyhodnotit společně.
    • V rámci MQL je možné pracovat se základními matematickými operacemi (sčítání +, odečítání -, násobení * a dělení /), a dokonce i s negací (pomocí operátoru NOT).
       
  • K čemu slouží podmínky a MQL?
    • Slouží k filtrování produktů a pro vytváření jejich výběrů na stránce Produkty.
    • Používáme je také jako upřesňovací prvek v podmínkách v cestě k elementu.
1 Like