Introduction à BigQuery
Matthew Forrest
Field CTO
INNER JOIN : valeurs présentes dans les deux tables.
LEFT JOIN : toutes les lignes de la table de gauche, correspondances avec la droite.
RIGHT JOIN : toutes les lignes de la table de droite, correspondances avec la gauche.
FULL JOIN : toutes les lignes des deux tables, correspondances et non-correspondances.
CROSS JOIN : chaque ligne avec chaque ligne des deux tables.

Customers : table de gauche
Orders : table de droite
INNER JOIN : clients et commandes correspondants
LEFT JOIN : afficher tous les clients, même sans commande
RIGHT JOIN : afficher toutes les commandes, même sans ID client
FULL JOIN : afficher tous les clients et toutes les commandes, même sans lien
CROSS JOIN : associer chaque commande à chaque client, sans condition
SELECT
c.customer_id, s.product_name
FROM customers c
-- Le mot-clé INNER est optionnel
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,
-- Ajouter les noms de tables séparés
-- par une virgule équivaut à un CROSS JOIN
-- L'ordre est déterminé par la
-- table de gauche, ici "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 |
Introduction à BigQuery