Snowflake'te Join'ler

Snowflake SQL'e Giriş

George Boorman

Senior Curriculum Manager, DataCamp

JOIN'ler

  • INNER JOIN
  • OUTER JOIN'ler
    • LEFT OUTER JOIN veya LEFT JOIN
    • RIGHT OUTER JOIN veya RIGHT JOIN
    • FULL OUTER JOIN veya FULL JOIN
  • CROSS JOIN'ler
  • SELF JOIN'ler
  • NATURAL JOIN
  • LATERAL JOIN
Snowflake SQL'e Giriş

Pizza veri kümesi

Pizza veritabanı şema diyagramı

Snowflake SQL'e Giriş

NATURAL JOIN

  • NATURAL JOIN sütunları otomatik eşleştirir ve yinelenenleri kaldırır

Sözdizimi:

SELECT ...
FROM <table_one> [
                     {
                       | NATURAL [ { LEFT | RIGHT | FULL } [ OUTER ] ]
                     }
                   ]
                   JOIN <table_two>
[ ... ]
Snowflake SQL'e Giriş

NATURAL JOIN

NATURAL JOIN olmadan

SELECT * 
FROM pizzas AS p 
JOIN  pizza_type AS t 
    ON t.pizza_type_id = p.pizza_type_id

Natural join olmadan birleştirme sonucu

NATURAL JOIN ile

SELECT *
FROM pizzas AS p 
NATURAL JOIN pizza_type AS t

  Natural join ile birleştirme sonucu

Snowflake SQL'e Giriş

NATURAL JOIN

 

İZİN VERİLMEZ

select *
FROM pizzas AS p 
NATURAL JOIN pizza_type AS t
    ON  t.pizza_type_id = p.pizza_type_id

Sözdizimi Hatası Görseli

Snowflake SQL'e Giriş

NATURAL JOIN

$$

İZİN VERİLİR

  • WHERE ifadesi
SELECT *
FROM pizzas AS p 
NATURAL JOIN pizza_type AS t
WHERE pizza_type_id = 'bbq_ckn'
Snowflake SQL'e Giriş

LATERAL JOIN

  • LATERAL JOIN: FROM içindeki bir alt sorgunun önceki tablo veya görünümlerden sütunlara başvurmasına izin verir.

Sözdizimi:

SELECT ...
FROM <left_hand_expression> , -- 
LATERAL 
(<right_hand_expression>)

  • left_hand_expression - Tablo, görünüm veya alt sorgu

  • right_hand_expression - Satır içi görünüm veya alt sorgu

Snowflake SQL'e Giriş

Alt sorgu ile LATERAL JOIN

SELECT 
    p.pizza_id, 
    lat.name, 
    lat.category 
FROM pizzas AS p,

LATERAL -- LATERAL anahtar sözcüğü ( SELECT * FROM pizza_type AS t
-- Dış sorgu sütununa başvuru: p.pizza_type_id WHERE p.pizza_type_id = t.pizza_type_id
) AS lat
Snowflake SQL'e Giriş

Neden LATERAL JOIN?

SELECT 
    *
FROM orders AS o,
LATERAL (
   -- total_spent hesaplayan alt sorgu
    SELECT 
        SUM(p.price * od.quantity) AS total_spent
    FROM order_details AS od
    JOIN pizzas AS p 
          ON od.pizza_id = p.pizza_id
    WHERE o.order_id = od.order_id
) AS t
ORDER BY o.order_id
Snowflake SQL'e Giriş

Ayo berlatih!

Snowflake SQL'e Giriş

Preparing Video For Download...