Opačné výběry v Mergadu

Jak na opačné výběry

Tento článek vysvětluje, co jsou opačné výběry a jak s nimi v Mergadu efektivně pracovat. Ukážeme si rozdíl mezi jednoduchým opačným výběrem (kde stačí změnit operátor, např. z „=“ na „!=“) a složitějším výběrem s využitím MQL a operátoru NOT.
Na konci článku budete umět:

  • rozpoznat situaci, kdy je vhodné použít opačný výběr,
  • vytvořit jednoduchý opačný výběr bez znalosti MQL,
  • přepsat složitý výběr do MQL a použít negaci NOT(...) pro dosažení opačného výsledku.

Kontext

Běžně při práci s výběry určujete produkty, které chcete zasáhnout—např. zvýšit cenu, upravit název nebo je skrýt. Někdy je ale jednodušší vytvořit výběr opačný—tedy takový, který vybere vše ostatní mimo určitou skupinu.
Jinými slovy: místo „co chci upravit“ definujete „co nechci upravit“.
Tento přístup šetří čas hlavně v situacích, kdy:

  • přesně víte, které produkty mají zůstat beze změny, nebo
  • máte malou skupinu produktů, která má být na výstupu zachována, a všechny ostatní mají být skryté.

Příklady z praxe

Typický příklad
Spravujete feed s 65 000 produkty. Chcete ve výstupu ponechat jen 5 000 konkrétních produktů a všechny ostatní skrýt.
Můžete na to jít dvěma způsoby:

  • vytvořit výběr na všech 60 000 produktů, které nechcete (velmi nepraktické), nebo
  • vytvořit opačný výběr: „Cokoliv kromě těchto produktů.“
    Právě k tomu slouží opačné výběry.

Kdy se opačný výběr hodí

  • nechcete zasáhnout určitou skupinu produktů pravidlem (např. nechcete jim měnit název nebo cenu),
  • chcete skrýt všechno kromě určité skupiny produktů,
  • chcete přehledně spravovat výjimky místo dlouhých seznamů podmínek.

Jednoduché opačné výběry (bez MQL)

Pokud potřebujete vytvořit jednoduchý opačný výběr, nemusíte hned používat MQL. Stačí pracovat s opačnými operátory přímo v základním rozhraní výběrů.
Princip je jednoduchý: místo podmínky typu „obsahuje / je ve výčtu / =“ použijete její negaci.

Běžný operátor Opačný operátor Co dělá
= (rovná se) != (nerovná se) Vybere produkty s jinou hodnotou
obsahuje neobsahuje Vybere produkty, které text neobsahují
je ve výčtu není ve výčtu Vybere produkty, které nejsou v uvedeném seznamu

Příklad 1 – obrácení „obsahuje“
Původní výběr:

CATEGORY ~OBSAHUJE "Zahrada"

Najde všechny produkty, které mají v elementu <CATEGORY> hodnotu „Zahrada“.
Opačný výběr (ponechá jen produkty, které tuto hodnotu neobsahují):

CATEGORY !~ NEOBSAHUJE "Zahrada"

Příklad 2 – „je ve výčtu“ vs. „není ve výčtu“
Původní výběr (produkty, které chcete ponechat na výstupu):

ITEM_ID Je ve výčtu (101, 102, 103)

Opačný výběr (produkty, které chcete skrýt – tedy vše kromě uvedených):

ITEM_ID Není ve výčtu (101, 102, 103)

Tento výběr vybere všechny produkty kromě těchto tří.

Pokročilé opačné výběry pomocí MQL (NOT)

Pokud je výběr složitější (více podmínek, logika AND/OR), doporučujeme použít MQL a operátor NOT. Tento přístup dává plnou kontrolu nad tím, jak se výběr otočí.

Jak funguje operátor NOT

V MQL můžete NOT použít ke „znegujování“ podmínky nebo celého dotazu.

Příklady ekvivalence:

ITEM_ID != 43

je totéž jako

NOT(ITEM_ID = 43)
  • ITEM_ID = 43 → vybere produkt s ID 43
  • NOT(ITEM_ID = 43) → vybere všechny kromě produktu s ID 43

Grafické znázornění negace (slovně):
NOT obrací množinu – vybere vše, co neodpovídá původnímu výběru.

Kroky k řešení

1) Přihlášení do Mergada a přechod na správu výběrů

  • Přihlaste se do svého Mergado účtu.
  • Přejděte na sekci Produkty v hlavním menu.

2) Vytvoření dotazu

  • Operátor NOT se vždy přidává v sekci Vlastní MQL dotaz.
  • Můžete si nejdříve výběr sestavit v jednoduchém rozhraní a poté se přepnout do MQL sekce, nebo rovnou napsat dotaz v MQL.
  • Vytvořte výběr produktů, které chcete ponechat.
  • Celý vytvořený dotaz uzavřete do kulatých závorek () a před něj přidejte negaci NOT.

3) Pojmenování a uložení

  • Výběr si vhodně pojmenujte a uložte.
  • Následně s ním můžete pracovat v rámci pravidel (např. použít ve skrývacím pravidle).

Praktický příklad

Chcete ponechat na výstupu pouze produkty, které:

  • mají v názvu „kalhoty“,
  • mají parametr barva = fialová,
  • a stojí více než 1100 Kč s DPH.

Všechno ostatní chcete skrýt.
Celkový počet produktů je cca 65 000, tento výběr najde pouze 2.

Postup:

  • V rozhraní výběru přepněte do Vlastní MQL dotaz.
  • Původní výběr (ten, který definuje co ponechat) zabalte do () a předřaďte NOT.
    Tím vytvoříte opačný výběr: vybere všechny produkty kromě těch, které splňují původní podmínky.
    Můžete ho použít ve skrývacím pravidle—ve výstupním feedu tak zůstanou jen produkty, které odpovídají původnímu výběru.

Tipy a časté chyby

  • Nezapomínejte na závorky. Pokud kombinujete více podmínek, vždy celý původní výběr uzavřete do závorek:

    NOT(PRODUCTNAME CONTAINS "boty" OR CATEGORY = "Doplňky")
    
  • Pamatujte, že NOT obrací celou logiku, ne jen jednotlivé části.
    Pokud kombinujete více výrazů s AND a OR, může být výsledek jiný, než čekáte. Výběr proto otestujte.

Rychlá rekapitulace (přehled)

Typ výběru Jak vytvořit Příklad
Jednoduchý opačný výběr Použít opačný operátor CATEGORY != "Zahrada"
Opačný výběr se seznamem hodnot Použít „není ve výčtu“ ITEM_ID NOT IN (101,102,103)
Složitý opačný výběr Použít MQL a NOT(...) NOT(PRODUCTNAME CONTAINS "kalhoty" AND PRICE_VAT > 1100)

FAQ

Kdy má smysl použít opačný výběr?
Když nechcete zasáhnout určitou skupinu produktů pravidlem, chcete skrýt všechno kromě určité skupiny, nebo potřebujete přehledně spravovat výjimky bez dlouhých seznamů podmínek.

Jak vytvořím jednoduchý opačný výběr bez MQL?
V základním rozhraní výběrů použijete opačný operátor (např. != místo =; „neobsahuje“ místo „obsahuje“; „není ve výčtu“ místo „je ve výčtu“).

Jak vypadá příklad pro „obsahuje“ vs. „neobsahuje“?
Původní: CATEGORY ~OBSAHUJE "Zahrada"
Opačný: CATEGORY !~ NEOBSAHUJE "Zahrada"

Jak vytvořím opačný výběr k seznamu ID?
Původní: ITEM_ID Je ve výčtu (101, 102, 103)
Opačný: ITEM_ID Není ve výčtu (101, 102, 103) – vybere vše kromě těchto tří.

Kdy sáhnout po MQL a NOT?
Když je výběr složitější (více podmínek, kombinace AND/OR) a potřebujete přesně řídit negaci celého dotazu.

Jak funguje NOT v MQL na jednoduchém příkladu?
ITEM_ID != 43 je totéž co NOT(ITEM_ID = 43). NOT vybere všechny položky, které nesplňují podmínku.

Kam NOT zapisovat?
Do sekce Vlastní MQL dotaz. Původní výběr dejte do závorek () a před něj napište NOT.

Proč jsou závorky důležité?
Zajistí, že NOT neguje přesně tu část, kterou chcete. U kombinací AND/OR bez závorek hrozí jiný výsledek, než očekáváte.

Mohu opačný výběr použít ke skrytí všeho mimo výjimky?
Ano. Opačný výběr můžete použít ve skrývacím pravidle, takže ve výstupním feedu zůstanou jen položky splňující původní (ne-negovaný) výběr.

Zvládnu to bez znalosti MQL?
Ano—u jednoduchých případů stačí v rozhraní výběrů použít opačné operátory. MQL s NOT využijete, když potřebujete negovat složitější kombinace podmínek.