Equi-join

9 / 100

Equi-join

La equi-join, altrimenti conosciuta come equijoin, ha un particolare tipo di comparatore, detto theta join, che utilizza come metodo di verifica, solamente l’uguaglianza matematica come regola di confronto.

Usare altri operatori di confronto (come ad esempio <) squalifica la join come equi-join.

La query riportata di seguito utilizza una equi-join:

SELECT *
FROM   Impiegati 
       INNER JOIN Dipartimenti 
          ON Impiegati.ID_dipartimento = Dipartimenti.ID_dipartimento

SQL fornisce una scorciatoia per definire le equi-joins, attraverso la keyword USING

SELECT *
FROM   Impiegati 
       INNER JOIN Dipartimenti 
          USING (ID_dipartimento)

La keyword USING è supportata da Microsoft SQL Server Management Studio, MySQL, Oracle, PostgreSQL, SQLite, e DB2/400.

SQL Equi join usa la parola chiave JOIN per specificare il nome della tabella e la parola chiave ON per specificare la condizione del predicato di join.

Esempio

SQL> SELECT *
    FROM product JOIN category
    ON product.category_id = category.category_id;

CATEGORY_ID PRODUCT_NAME          CATEGORY_ID CATEGORY_NAME
----------- --------------------- ----------- ---------------------
          1 Nokia                           1 Mobiles
          1 Samsung                         1 Mobiles
          2 HP                              2 Laptops
          2 Dell                            2 Laptops
          3 Apple                           3 Tablet
          4 Nikon                           4 Cameras

6 rows selected. 

Puoi anche scrivere Equi join come segue.

Esempio

SQL> SELECT *
    FROM product, category
    WHERE product.category_id = category.category_id;

CATEGORY_ID PRODUCT_NAME          CATEGORY_ID CATEGORY_NAME
----------- --------------------- ----------- ---------------------
          1 Nokia                           1 Mobiles
          1 Samsung                         1 Mobiles
          2 HP                              2 Laptops
          2 Dell                            2 Laptops
          3 Apple                           3 Tablet
          4 Nikon                           4 Cameras

6 rows selected. 

Se la condizione del predicato join entrambi i nomi delle colonne della tabella sono uguali, puoi scrivere questa query in modo abbreviato utilizzando USING Keyword.

Esempio

SQL> SELECT *
    FROM product 
    INNER JOIN category USING (category_id);

CATEGORY_ID PRODUCT_NAME          CATEGORY_ID CATEGORY_NAME
----------- --------------------- ----------- ---------------------
          1 Nokia                           1 Mobiles
          1 Samsung                         1 Mobiles
          2 HP                              2 Laptops
          2 Dell                            2 Laptops
          3 Apple                           3 Tablet
          4 Nikon                           4 Cameras

6 rows selected.
Translate »