SQL 結合
JOIN 句は、複数のデータセットからデータを取得するために使用します。
カスタマーデータプラットフォームでは、クエリサービス用に 4 種類の結合がサポートされています。
- [INNER] JOIN
- LEFT [OUTER] JOIN
- RIGHT [OUTER] JOIN
- FULL [OUTER] JOIN
1Catalog_sales__dll
2w_state__c | i_item_id__c | sales_before | sales_after
3------------+------------------+---------------------+---------------------
4 AL | 5363626465464654 | -60.129999999999995 | -1132.3600000000004
5 AZ | 8823598275928542 | 186.08 | 135.19
6 AL | 9072358430537495 | -2109.4100000000003 | 67.32000000000001
7 NY | 9803626465464654 | -60.129999999999995 | -1132.3600000000004
8 NY | 8823598275928542 | 2186.08 | 1135.19
9 AZ | 7372351430537405 | -2109.4100000000003 | 45.320000000045311Catalog_orders__dll
2w_state__c | i_item_id__c | i_order_id__c
3------------+------------------+---------------------
4AL | 5363626465464654 | 4909369
5AZ | 8823598275928542 | 3282309
6AL | 9072358430537495 | 2890753
7NY | 6803628965432654 | 1092842
8NY | 2713598275928231 | 9893844
9AZ | 1372351930538405 | 2098188
10MI | 9013598275928231 | 9893844
11NJ | 2009359827592623 | 2393844[INNER] JOIN
INNER JOIN は、指定した結合条件を満たす複数のテーブルから共通するすべての行を取得します。
1SELECT expression
2FROM table1
3INNER JOIN table2
4ON table1.column = table2.column1SELECT w_state__c, i_item_id__c
2FROM catalog_sales__dll
3INNER JOIN catalog_orders__dll
4ON catalog_sales__dll.i_item_id__c = catalog_orders__dll.i_item_id__c1w_state__c | i_item_id__c
2------------+------------------
3AL | 5363626465464654
4AZ | 8823598275928542
5AL | 9072358430537495LEFT [OUTER] JOIN
LEFT OUTER JOIN は、ON 条件で指定された左側のテーブルからすべての行を取得し、もう一方のテーブルから結合条件を満たす行のみを取得します。
1SELECT columns
2FROM table1
3LEFT [OUTER] JOIN table2
4ON table1.column = table2.column1SELECT w_state__c, i_item_id__c
2FROM catalog_sales__dll
3LEFT(OUTER) JOIN catalog_orders__dll
4ON catalog_sales__dll.i_item_id__c = catalog_orders__dll.i_item_id__c1w_state__c | i_item_id__c
2------------+------------------
3AL | 5363626465464654
4AZ | 8823598275928542
5AL | 9072358430537495
6NY | 9803626465464654
7NY | 8823598275928542
8AZ | 7372351430537405RIGHT [OUTER] JOIN
RIGHT OUTER JOIN は、ON 条件で指定された右側のテーブルからすべての行を取得し、もう一方のテーブルから結合条件を満たす行のみを取得します。
1SELECT columns
2FROM table1
3RIGHT [OUTER] JOIN table2
4ON table1.column = table2.column1SELECT w_state__c, i_item_id__c
2FROM catalog_sales__dll
3RIGHT(OUTER) JOIN catalog_orders__dll
4ON catalog_sales__dll.i_item_id__c = catalog_orders__dll.i_item_id__c1w_state__c | i_item_id__c
2------------+------------------
3AL | 5363626465464654
4AZ | 8823598275928542
5AL | 9072358430537495
6NY | 6803628965432654
7NY | 2713598275928231
8AZ | 1372351930538405
9MI | 9013598275928231
10NJ | 2009359827592623FULL [OUTER] JOIN
FULL [OUTER] JOIN は、左のテーブルと右のテーブルからすべての行を取得し、さらに結合条件を満たす共通の行を取得します。
1SELECT columns
2FROM table1
3FULL [OUTER] JOIN table2
4ON table1.column = table2.column1SELECT w_state__c, i_item_id__c
2FROM catalog_sales__dll
3FULL(OUTER) JOIN catalog_orders__dll
4ON catalog_sales__dll.i_item_id__c = catalog_orders__dll.i_item_id__c1w_state__c | i_item_id__c
2-----------+------------------
3AL | 5363626465464654
4AZ | 8823598275928542
5AL | 9072358430537495
6NY | 9803626465464654
7NY | 8823598275928542
8AZ | 7372351430537405
9NY | 6803628965432654
10NY | 2713598275928231
11AZ | 1372351930538405
12MI | 9013598275928231
13NJ | 2009359827592623