V tomto příspěvku se dozvíme:
- Co je MQL?
- Co je podmínka (v MQL)?
- Co se dá dělat s podmínkami a MQL?
- K čemu slouží MQL?
- Příklady použití
- Shrnutí
Úvod
Filtrovali jste někdy produkty nebo vytvářeli výběry v MERGADO Editoru na stránce Produkty?
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.
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.
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í:
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í.
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.
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.
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:
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ň.
Podmínky v Onelineru nebo ve formuláři pro Vlastní MQL dotaz dohromady tvoří dotaz.
Praktické zajímavosti o MQL
-
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
-
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.
-
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 bez operátoru:
Přečtěte si příspěvek přímo věnovaný chybám v Onelineru nebo ve formuláři pro Vlastní MQL dotaz.
Dalším příkladem je třeba vynechání ukončovacích uvozovek v podmínce v cestě k elementu:
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.
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í:
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.