---
title: "Sitecore CDPのSQLエディタでSQLクエリを書くためのルール"
slug: "rules-for-writing-sql-queries-in-the-sql-editor-in-sitecore-cdp"
abstract: "SQLクエリを高度モードで書くためのルールと例(Sitecore CDP)を提供します。"
---
# Sitecore CDPのSQLエディタでSQLクエリを書くためのルール

SQLクエリを上級モードで書き始める前に、いくつかのルールに慣れておくことをお勧めします。

SQLエディタで[SQLクエリを書く](https://doc.sitecore.com/cdp/ja/users/sitecore-cdp/introduction-to-batch-segmentation/using-advanced-mode-in-batch-segmentation-in-sitecore-cdp/write-an-sql-query-in-sitecore-cdp.html "Write an SQL query in Sitecore CDP") ためのルール:

-   複数の文を持つ単一のクエリを書くことはできますが、実行できるのは1つのクエリだけです。
-   使用は文を区切るために空欄を使わず、セミコロンやスラッシュで使わなければなりません。
-   GROUP BYステートメントやDISTINCTステートメントを使って、ユニークなゲスト参照を出力しましょう。
-   クエリを書いて、実行後に一意のゲスト参照リストを含む単一の列が生成されます。ゲスト参照は guest\_ref 属性で表されます。

最新かつ正確なゲストリファレンスを返すために、以下のステートメントを使ってエンティティを結合できます:

-   ゲスト参照リストを出力する - GROUP BY文を使って、meta\_ref列からゲスト参照の一意リストを出力します。以下のSQLクエリに示されています。
    
    SELECT g.meta\_ref as guest\_ref
     FROM guests g
    WHERE upper(g.type) = 'CUSTOMER'
    GROUP BY g.meta\_ref
    
-   orderエンティティの一致する値を結合する - INNER JOIN文を使って、orderエンティティの値が一致する行をguestsエンティティに結合します。以下のSQLクエリに示されています:
    
    SELECT g.meta\_ref as guest\_ref
     FROM (
     SELECT meta\_guest\_ref
     FROM orders
     WHERE core\_price > 100
     ) o
    INNER JOIN guests g
     ON o.meta\_guest\_ref = g.meta\_ref
    GROUP BY g.meta\_ref
    
-   sessionsエンティティの一致する値を結合する - INNER JOIN文を使って、sessionsエンティティの値が一致する行をguestsエンティティに結合します。以下のSQLクエリに示されています:
    
    SELECT g.meta\_ref as guest\_ref
     FROM (
     SELECT meta\_guest\_ref
     FROM sessions
     WHERE upper(type) = 'WEB'
     ) s
    INNER JOIN guests g
     ON s.meta\_guest\_ref = g.meta\_ref
    GROUP BY g.meta\_ref
    
-   events、sessions、guestsエンティティの一致する値を結合する - eventsエンティティの値が一致する行をsessionsエンティティに結合するにはINNER JOIN文を使用します。sessionsエンティティとg.meta\_refを組み合わせるために、INNER JOIN文を再度使用してください。以下のSQLクエリに示されています:
    
    SELECT g.meta\_ref as guest\_ref
     FROM (
     SELECT meta\_session\_ref
     FROM events
     WHERE upper(type) = 'VIEW'
     ) e
    INNER JOIN sessions s
    ON e.meta\_session\_ref = s.meta\_ref
    INNER JOIN guests g
     ON s.meta\_guest\_ref = g.meta\_ref
    GROUP BY g.meta\_ref
    
-   order items、orders、guestsエンティティの一致する値を結合する - order itemsエンティティの値が一致する行をordersエンティティに結合するにはINNER JOIN文を使用します。ordersエンティティとg.meta\_refを組み合わせるために、INNER JOIN文を再度使用してください。以下のSQLクエリに示されています:
    
    SELECT g.meta\_ref as guest\_ref
     FROM (
     SELECT meta\_order\_ref
     FROM order\_items
     WHERE date(core\_ordered\_at) > date('2021-01-01')
     ) oi
    INNER JOIN orders o
    ON oi.meta\_order\_ref = o.meta\_ref
    INNER JOIN guests g
     ON o.meta\_guest\_ref = g.meta\_ref
    GROUP BY g.meta\_ref