BigQuery เบื้องต้น
Matthew Forrest
Field CTO
INNER JOIN: มีค่าตรงกันในทั้งสองตาราง
LEFT JOIN: ทุกแถวในตาราง left จับคู่กับตาราง right
RIGHT JOIN: ทุกแถวในตาราง right จับคู่กับตาราง left
FULL JOIN: ทุกแถวจากทั้งสองตาราง ทั้งที่ตรงกันและไม่ตรงกัน
CROSS JOIN: ทุกแถวจับคู่กับทุกแถวจากทั้งสองตาราง

Customers: ตาราง left
Orders: ตาราง right
INNER JOIN: ดึงข้อมูลลูกค้าและออเดอร์ที่ตรงกัน
LEFT JOIN: แสดงลูกค้าทุกคน แม้ยังไม่เคยสั่งซื้อ
RIGHT JOIN: แสดงออเดอร์ทั้งหมด แม้ไม่มี customer ID
FULL JOIN: แสดงลูกค้าและออเดอร์ทั้งหมด แม้ยังไม่มีการเชื่อมโยงกัน
CROSS JOIN: จับคู่ทุกออเดอร์กับทุกลูกค้าโดยไม่มีเงื่อนไข
SELECT
c.customer_id, s.product_name
FROM customers c
-- The INNER keyword is optional
JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
SELECT
c.customer_id, s.product_name
FROM customers c
LEFT JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
| 3 | null |
SELECT
c.customer_id, s.product_name
FROM customers c
RIGHT JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
| null | External Microphone |
SELECT
c.customer_id, s.product_name
FROM customers c
OUTER JOIN sales_data s
ON c.customer_id = s.customer_id;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 2 | Running Shoes |
| 3 | null |
| null | External Microphone |
SELECT
c.customer_id,
s.product_name,
-- Adding table names separated
-- by a comma is a CROSS JOIN
-- Order is determined by the
-- left table, here "customers"
FROM customers c, sales_data s;
| customer_id | product_name |
|-------------|----------------------|
| 1 | Bluetooth Headphones |
| 1 | null |
| 2 | Bluetooth Headphones |
| 2 | null |
| 3 | null |
| 3 | Bluetooth Headphones |
SELECT
c.customer_id,
payments.method
FROM customers c,
UNNEST(
customers.payment_methods
) payments;
| customer_id | product_name |
|-------------|--------------|
| 1 | Visa |
| 1 | Mastercard |
| 1 | Venmo |
| 1 | Paypal |
| 2 | Amex |
| 2 | Visa |
BigQuery เบื้องต้น