Fordított lekérdezések a Mergadóban#

Ez a cikk bemutatja, mik azok a fordított lekérdezések, és hogyan dolgozz velük hatékonyan a Mergadóban. Megtudod a különbséget az egyszerű fordított lekérdezés (ahol elég megváltoztatni az operátort, pl. =-ről !=-ra) és az összetettebb, MQL-t és NOT operátort igénylő megoldás között.

A cikk végén tudni fogod:

  • mikor érdemes fordított lekérdezést használni,
  • hogyan hozz létre egyszerű fordított lekérdezést MQL ismeret nélkül,
  • hogyan írj összetett lekérdezést MQL-be, és érd el a fordított eredményt NOT(...) negációval.

Kontextus#

Általában a lekérdezésekkel azokat a termékeket határozod meg, amelyeket módosítani szeretnél – pl. árat emelni, nevet módosítani vagy elrejteni. Néha azonban egyszerűbb fordított lekérdezést készíteni: olyat, amely mindent kiválaszt egy bizonyos csoporton kívül.

Ahelyett, hogy meghatározod, „mit akarsz módosítani", azt definiálod, „mit nem akarsz módosítani". Ez a megközelítés főleg akkor hasznos, ha:

  • pontosan tudod, mely termékeknek kell változatlanul maradniuk, vagy
  • van egy kis termékcsoportod, amelyet meg kell tartani a kimenetben, és az összes többit el kell rejteni.

Gyakorlati példák#

Tipikus példa

65 000 termékes feedet kezelsz. A kimenetben csak 5 000 konkrét terméket szeretnél megtartani, és az összes többit elrejteni. Kétféleképpen oldhatod meg:

  • lekérdezést készítesz mind a 60 000 nem kívánt termékre (nagyon nem praktikus), vagy
  • fordított lekérdezést készítesz: „Minden, kivéve ezeket a termékeket."

Pontosan erre valók a fordított lekérdezések.

Mikor hasznos a fordított lekérdezés?

  • Nem akarsz egy bizonyos termékcsoportot szabállyal érinteni (pl. nem akarod megváltoztatni a nevüket vagy az árukat).
  • Mindent el akarsz rejteni egy bizonyos termékcsoporton kívül.
  • Áttekinthetően akarod kezelni a kivételeket hosszú feltétellisták helyett.

Egyszerű fordított lekérdezések (MQL nélkül)#

Ha egyszerű fordított lekérdezést kell létrehoznod, nem kell rögtön MQL-t használnod. Elég az ellentétes operátorokkal dolgoznod közvetlenül a lekérdezések alapfelületén.

Az elv egyszerű: a „tartalmazza / listában van / =" típusú feltétel helyett annak negációját használod.

Szokásos operátor Ellentétes operátor Mit csinál
= (egyenlő) != (nem egyenlő) Más értékkel rendelkező termékeket választ ki
tartalmazza nem tartalmazza Azokat a termékeket választja ki, amelyek nem tartalmazzák a szöveget
listában van nincs a listában Azokat a termékeket választja ki, amelyek nincsenek a megadott listában

1. példa – a „tartalmazza" megfordítása

Eredeti lekérdezés:

CATEGORY ~OBSAHUJE "Zahrada"

Megtalálja az összes terméket, amelynek a <CATEGORY> elemében a „Zahrada" érték szerepel. Fordított lekérdezés (csak azokat tartja meg, amelyek nem tartalmazzák ezt az értéket):

CATEGORY !~ NEOBSAHUJE "Zahrada"

2. példa – „listában van" vs. „nincs a listában"

Eredeti lekérdezés (termékek, amelyeket meg akarsz tartani a kimenetben):

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

Fordított lekérdezés (termékek, amelyeket el akarsz rejteni – tehát minden a felsoroltak kivételével):

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

Ez a lekérdezés kiválaszt minden terméket e három kivételével.

Haladó fordított lekérdezések MQL-lel (NOT)#

Ha a lekérdezés összetettebb (több feltétel, AND/OR logika), érdemes az MQL-t és a NOT operátort használni. Ez a megközelítés teljes kontrollt ad a lekérdezés megfordítása felett.

A NOT operátor működése#

Az MQL-ben a NOT-ot egy feltétel vagy egy teljes lekérdezés negálására használhatod.

Ekvivalencia példák:

ITEM_ID != 43

ugyanaz, mint

NOT(ITEM_ID = 43)
  • ITEM_ID = 43 → kiválasztja a 43-as ID-jű terméket
  • NOT(ITEM_ID = 43) → kiválaszt mindent kivéve a 43-as ID-jű terméket

A negáció lényege: A NOT megfordítja a halmazt – mindent kiválaszt, ami nem felel meg az eredeti lekérdezésnek.

Megoldás lépései#

1) Navigálás a lekérdezések kezeléséhez#

  • Jelentkezz be a Mergado fiókodba.
  • Navigálj a Termékek menüpontra a főmenüben.

2) Lekérdezés létrehozása#

  • A NOT operátort mindig az Egyéni MQL lekérdezés szekcióban kell hozzáadni.
  • Először összeállíthatod a lekérdezést az egyszerű felületen, majd átválthatsz az MQL szekcióra, vagy közvetlenül MQL-ben is írhatsz.
  • Hozd létre azoknak a termékeknek a lekérdezését, amelyeket meg akarsz tartani.
  • Az egész létrehozott lekérdezést zárd kerek zárójelekbe (), és eléje írd a NOT negációt.

3) Elnevezés és mentés#

  • Adj a lekérdezésnek megfelelő nevet és mentsd el.
  • Ezután felhasználhatod szabályokban (pl. elrejtő szabályban).

Gyakorlati példa#

A kimenetben csak azokat a termékeket akarod megtartani, amelyek:

  • a nevükben tartalmazzák a „kalhoty" szót,
  • a barva = fialová paraméterrel rendelkeznek,
  • és 1100 CZK-nál drágábbak ÁFÁ-val.

Minden mást el akarsz rejteni. Az összes termék száma kb. 65 000, ez a lekérdezés mindössze 2-t talál.

Lépések:

  • A lekérdezés felületén válts az Egyéni MQL lekérdezés módra.
  • Az eredeti lekérdezést (ami meghatározza, mit kell megtartani) zárd ()-be és írd elé a NOT-ot. Ezzel fordított lekérdezést hozol létre: kiválaszt minden terméket kivéve azokat, amelyek megfelelnek az eredeti feltételeknek. Felhasználhatod elrejtő szabályban – így a kimeneti feedben csak az eredeti lekérdezésnek megfelelő termékek maradnak.

Tippek és gyakori hibák#

  • Ne feledkezz meg a zárójelekről. Ha több feltételt kombinálsz, mindig zárd az egész eredeti lekérdezést zárójelekbe:

    NOT(PRODUCTNAME CONTAINS "boty" OR CATEGORY = "Doplňky")
  • A NOT az egész logikát megfordítja, nem csak az egyes részeket. Ha több kifejezést kombinálsz AND-dal és OR-ral, az eredmény más lehet, mint amire számítasz. Mindig teszteld a lekérdezést.

Gyors összefoglaló#

Lekérdezés típusa Hogyan hozd létre Példa
Egyszerű fordított lekérdezés Ellentétes operátor használata CATEGORY != "Zahrada"
Fordított lekérdezés értéklistával „nincs a listában" használata ITEM_ID NOT IN (101,102,103)
Összetett fordított lekérdezés MQL és NOT(...) használata NOT(PRODUCTNAME CONTAINS "kalhoty" AND PRICE_VAT > 1100)

GYIK#

Mikor érdemes fordított lekérdezést használni? Ha nem akarsz egy bizonyos termékcsoportot szabállyal érinteni, mindent el akarsz rejteni egy bizonyos csoporton kívül, vagy áttekinthetően akarod kezelni a kivételeket hosszú feltétellisták nélkül.

Hogyan hozok létre egyszerű fordított lekérdezést MQL nélkül? A lekérdezések alapfelületén az ellentétes operátort használod (pl. != az = helyett; „nem tartalmazza" a „tartalmazza" helyett; „nincs a listában" a „listában van" helyett).

Hogyan néz ki a „tartalmazza" vs. „nem tartalmazza" példa? Eredeti: CATEGORY ~OBSAHUJE "Zahrada" Fordított: CATEGORY !~ NEOBSAHUJE "Zahrada"

Hogyan hozok létre fordított lekérdezést ID-listához? Eredeti: ITEM_ID Je ve výčtu (101, 102, 103) Fordított: ITEM_ID Není ve výčtu (101, 102, 103) – mindent kiválaszt e három kivételével.

Mikor érdemes MQL-t és NOT-ot használni? Ha a lekérdezés összetettebb (több feltétel, AND/OR kombináció), és pontosan kell irányítanod az egész lekérdezés negálását.

Hogyan működik a NOT az MQL-ben egy egyszerű példán? ITEM_ID != 43 ugyanaz, mint NOT(ITEM_ID = 43). A NOT kiválaszt minden elemet, amely nem felel meg a feltételnek.

Hova írd a NOT-ot? Az Egyéni MQL lekérdezés szekcióba. Az eredeti lekérdezést tedd zárójelekbe (), és eléje írd a NOT-ot.

Miért fontosak a zárójelek? Biztosítják, hogy a NOT pontosan azt a részt negálja, amelyiket szeretnéd. AND/OR kombinációknál zárójelek nélkül más eredményt kaphatsz, mint amire számítasz.

Használhatom a fordított lekérdezést mindennek az elrejtésére a kivételeken kívül? Igen. A fordított lekérdezést felhasználhatod elrejtő szabályban, így a kimeneti feedben csak az eredeti (nem negált) lekérdezésnek megfelelő elemek maradnak.

Megy MQL tudás nélkül is? Igen – egyszerű esetekben elég a lekérdezések felületén az ellentétes operátorokat használni. MQL-t NOT-tal akkor használj, ha összetettebb feltételkombinációkat kell negálnod.

🇨🇿 🇬🇧 🇩🇪 🇭🇺