# Több lekérdezés eredményének egyesítése egy lekérdezésbe

> SQL/AI lekérdezéssel két lekérdezés találatát egy Listing Gridben jeleníted meg, meghatározott sorrendben (például előbb a bekapcsolt Switcher mezős felhasználók).

Néha egyetlen lekérdezés nem elég a kívánt sorrendhez. Példák: előbb a bestseller WooCommerce-termékek, utána bizonyos kategóriák termékei; két adattár elemei egy rácsban; vagy előbb azok a felhasználók, akiknél a Switcher mező be van kapcsolva, utána a többiek. Az általános megoldás: a lista különböző részeihez külön lekérdezést készítesz, majd egy SQL lekérdezéssel összefűzöd az eredményüket.

Előfeltétel: ingyenes Elementor vagy a blokkszerkesztő, és aktív JetEngine. Az alábbi példa felhasználókra mutatja be a lépéseket.

## 1. Switcher mező a felhasználói metadobozban

1. Hozz létre felhasználókra vonatkozó metadobozt a **JetEngine → Metadobozok** oldalon.
2. Vegyél fel bele egy **Switcher** típusú mezőt.
3. Mentsd a metadobozt.
4. A **Felhasználók** menüben nyisd meg a szerkeszteni kívánt felhasználókat, kapcsold be náluk a Switchert, és mentsd őket.

## 2. Az első lekérdezés: bekapcsolt Switcher

1. Nyisd meg a **JetEngine → Query Builder** oldalt, és kattints az **Új hozzáadása** gombra.
2. Add meg a **Név** mezőt, a **Lekérdezés típusa** legyen **Felhasználók lekérdezése**.
3. A **Meta Query** fülön adj hozzá egy feltételt: a mező kulcsa a Switcher neve, az összehasonlítás **Equal (=)**, az érték `true`, a típus **Char**.
4. Mentsd a lekérdezést.

A Switcher bekapcsolt állapotban `true`, kikapcsoltban `false` értéket tárol, ezért ez a feltétel a bekapcsolt felhasználókat adja vissza.

## 3. A második lekérdezés: kikapcsolt Switcher

1. A lekérdezések listáján másold le az előzőt.
2. Nevezd át, és a Meta Query feltételben az értéket cseréld `false`-ra.
3. Mentsd.

## 4. SQL lekérdezés a kettő összefűzésére

1. Hozz létre új lekérdezést, a típusa legyen **SQL/AI lekérdezés**.
2. Kapcsold be a **Haladó/AI mód** kapcsolót.
3. Az SQL-mezőbe írd be az alábbi kódot:

```sql
SELECT ID
FROM {prefix}users
WHERE ID IN (
%query_results|135%{"fallback":"'999999999'"},
%query_results|136%{"fallback":"999999999"}
)
ORDER BY FIELD(
   ID,
 %query_results|135%{"fallback":"'999999999'"},
 %query_results|136%{"fallback":"999999999"}
)
```

![Új lekérdezés SQL/AI típussal, a Haladó/AI mód kapcsolóval](./kepek/utmutatok-sql-lekerdezes-tipus.webp)

*Új lekérdezés SQL/AI típussal, a Haladó/AI mód kapcsolóval* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-engine-query&query_action=add)

A képen az SQL/AI lekérdezés beállításai láthatók; a **Haladó/AI mód** bekapcsolása után itt jelenik meg az SQL-mező.

A `135` és a `136` az előző két lekérdezés azonosítója, ezeket a saját oldalad azonosítóira kell cserélned. Az azonosítót a lekérdezés szerkesztőoldalának címsorában találod. A tartalék érték (`fallback`) legyen olyan szám, amelyet semmilyen elem nem használ, ezért szerepel a `999999999`. Ha szöveges tartalék kell, tedd egyszeres idézőjelek közé.

Bejegyzések esetén a táblát cseréld `{prefix}posts`-ra, a többi marad.

## 5. Lekérdezés a szűrőkhöz

Ez a lépés csak akkor kell, ha a Listing Gridet a JetSmartFilters szűrni fogja. A haladó SQL lekérdezést használó rács nem szűrhető, ezért készíts egy újabb, hagyományos lekérdezést, amely az SQL eredményét veszi alapul.

1. Hozz létre új lekérdezést, típusa **Felhasználók lekérdezése**.
2. Az **Include/Exclude** fülön kattints a pénzérmehalom ikonra, és az **Include** mezőbe illeszd be a **Query Results** makrót.
3. A makróban válaszd ki az előző SQL lekérdezést, a **Return** mezőben a **List of selected fields from item object** lehetőséget, a vesszővel elválasztott mezők közé írd: `ID`. Kattints az **Apply** gombra.
4. A **Misc** fülön az **Order by** legyen **By the included list of user IDs (requires the Include parameter)**. Ez őrzi meg a sorrendet: előbb a bekapcsolt, utána a kikapcsolt Switcheres felhasználók.
5. Mentsd a lekérdezést.

## 6. Listázási sablon a felhasználókhoz

1. A **JetEngine → Listings** oldalon kattints az **Új hozzáadása** gombra.
2. A **Listing source** legyen **Users**, adj nevet, a nézet **Elementor** vagy **Blocks (Gutenberg)**.
3. A sablonba tegyél egy **Dynamic Field** widgetet: a **Source** legyen **Meta Data**, a mező a Switcher.
4. Kapcsold be a **Filter field output** kapcsolót, és válaszd a **Switcher field values** visszahívást.
5. A **Text if enabled** és **Text is disabled** mezőbe írd a két állapot szövegét, például „Ez a felhasználó hitelesített!” és „Ez a felhasználó nem hitelesített.”
6. Frissítsd a sablont.

## 7. Megjelenítés az oldalon

1. Add hozzá a **Listing Grid** widgetet (vagy blokkot) az oldalhoz, és válaszd ki a felhasználói sablont.
2. A **Custom Query** fülön kapcsold be a **Use Custom Query** kapcsolót, és válaszd ki az 5. lépésben készített lekérdezést.
3. Frissítsd az oldalt.

A weboldalon előbb a bekapcsolt Switcheres felhasználók jelennek meg, utánuk a kikapcsoltak.
