En aquest tema, explorarem les operacions JOIN en SQL, que són fonamentals per treballar amb dades distribuïdes en múltiples taules. Les operacions JOIN permeten combinar registres de dues o més taules en una sola consulta, basant-se en una relació lògica entre les taules.

Objectius d'aprenentatge

  • Comprendre què són les operacions JOIN.
  • Aprendre els diferents tipus de JOIN.
  • Saber quan i com utilitzar cada tipus de JOIN.

Què és una operació JOIN?

Una operació JOIN en SQL s'utilitza per combinar registres de dues o més taules en una base de dades. Les taules es combinen basant-se en una condició comuna, sovint una clau primària en una taula i una clau forana en una altra.

Tipus de JOIN

Hi ha diversos tipus de JOIN en SQL, cadascun amb el seu propi comportament i ús específic:

  1. INNER JOIN: Retorna només les files que tenen coincidències en ambdues taules.
  2. LEFT JOIN (o LEFT OUTER JOIN): Retorna totes les files de la taula esquerra i les files coincidents de la taula dreta. Si no hi ha coincidència, es retorna NULL per les columnes de la taula dreta.
  3. RIGHT JOIN (o RIGHT OUTER JOIN): Retorna totes les files de la taula dreta i les files coincidents de la taula esquerra. Si no hi ha coincidència, es retorna NULL per les columnes de la taula esquerra.
  4. FULL OUTER JOIN: Retorna totes les files quan hi ha una coincidència en una de les taules. Si no hi ha coincidència, es retorna NULL per les columnes que no tenen coincidència.

Sintaxi bàsica de JOIN

La sintaxi general per a una operació JOIN és la següent:

SELECT column1, column2, ...
FROM table1
JOIN_TYPE table2
ON table1.common_column = table2.common_column;

Exemples pràctics

INNER JOIN

L'INNER JOIN retorna només les files que tenen coincidències en ambdues taules.

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;

Explicació:

  • employees i departments són les taules que estem combinant.
  • employees.department_id és la clau forana que es relaciona amb departments.id, la clau primària.

LEFT JOIN

El LEFT JOIN retorna totes les files de la taula esquerra i les files coincidents de la taula dreta.

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;

Explicació:

  • Retorna tots els empleats, inclosos aquells que no tenen un departament assignat. En aquests casos, department_name serà NULL.

RIGHT JOIN

El RIGHT JOIN retorna totes les files de la taula dreta i les files coincidents de la taula esquerra.

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;

Explicació:

  • Retorna tots els departaments, inclosos aquells que no tenen empleats assignats. En aquests casos, name serà NULL.

FULL OUTER JOIN

El FULL OUTER JOIN retorna totes les files quan hi ha una coincidència en una de les taules.

SELECT employees.name, departments.department_name
FROM employees
FULL OUTER JOIN departments
ON employees.department_id = departments.id;

Explicació:

  • Retorna totes les files de employees i departments. Si no hi ha coincidència, les columnes de la taula que no té coincidència seran NULL.

Exercicis pràctics

Exercici 1: Utilitzar INNER JOIN

Enunciat: Tens dues taules, students i courses. La taula students té les columnes student_id, name i course_id. La taula courses té les columnes course_id i course_name. Escriu una consulta per obtenir els noms dels estudiants i els noms dels cursos en què estan inscrits.

Solució:

SELECT students.name, courses.course_name
FROM students
INNER JOIN courses
ON students.course_id = courses.course_id;

Exercici 2: Utilitzar LEFT JOIN

Enunciat: Tens dues taules, orders i customers. La taula orders té les columnes order_id, order_date i customer_id. La taula customers té les columnes customer_id i customer_name. Escriu una consulta per obtenir tots els noms dels clients i les dates de les seves comandes, incloent els clients que no tenen comandes.

Solució:

SELECT customers.customer_name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

Exercici 3: Utilitzar FULL OUTER JOIN

Enunciat: Tens dues taules, products i suppliers. La taula products té les columnes product_id, product_name i supplier_id. La taula suppliers té les columnes supplier_id i supplier_name. Escriu una consulta per obtenir tots els noms dels productes i els noms dels proveïdors, incloent els productes sense proveïdors i els proveïdors sense productes.

Solució:

SELECT products.product_name, suppliers.supplier_name
FROM products
FULL OUTER JOIN suppliers
ON products.supplier_id = suppliers.supplier_id;

Resum

En aquesta secció, hem après sobre les operacions JOIN en SQL, incloent els diferents tipus de JOIN i com utilitzar-los per combinar dades de múltiples taules. Hem vist exemples pràctics de cada tipus de JOIN i hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, aprofundirem en l'ús específic de l'INNER JOIN.

Curs de SQL

Mòdul 1: Introducció a SQL

Mòdul 2: Consultes bàsiques de SQL

Mòdul 3: Treballar amb múltiples taules

Mòdul 4: Filtratge avançat de dades

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats