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 != 43ugyanaz, mint
NOT(ITEM_ID = 43)ITEM_ID = 43→ kiválasztja a 43-as ID-jű terméketNOT(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
NOToperá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 aNOTnegá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é aNOT-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
NOTaz egész logikát megfordítja, nem csak az egyes részeket. Ha több kifejezést kombinálszAND-dal ésOR-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.