Què és una subconsulta?

Una subconsulta és una consulta SQL que es troba dins d'una altra consulta SQL. Les subconsultes es poden utilitzar per a diverses finalitats, com ara filtrar dades, calcular valors agregats o fins i tot per a la creació de taules temporals. Les subconsultes es poden col·locar dins de les clàusules SELECT, FROM, WHERE, HAVING i altres.

Tipus de subconsultes

  1. Subconsultes simples: Retornen un sol valor.
  2. Subconsultes de múltiples valors: Retornen més d'un valor.
  3. Subconsultes correlacionades: Depenen de la consulta externa per a cada fila processada.

Sintaxi bàsica de les subconsultes

La sintaxi general d'una subconsulta és la següent:

SELECT column1, column2, ...
FROM table1
WHERE column_name operator (SELECT column_name FROM table2 WHERE condition);

Exemple bàsic

Suposem que tenim dues taules: employees i departments. Volem trobar els empleats que treballen en el departament de 'Sales'.

SELECT employee_name
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');

Subconsultes en la clàusula SELECT

Les subconsultes es poden utilitzar dins de la clàusula SELECT per calcular valors derivats.

Exemple

SELECT employee_name,
       (SELECT department_name FROM departments WHERE departments.department_id = employees.department_id) AS department_name
FROM employees;

Subconsultes en la clàusula FROM

Les subconsultes en la clàusula FROM es poden utilitzar per crear taules temporals.

Exemple

SELECT sub.employee_name, sub.department_name
FROM (SELECT employee_name, department_id FROM employees) AS sub
JOIN departments ON sub.department_id = departments.department_id;

Subconsultes en la clàusula WHERE

Les subconsultes en la clàusula WHERE es poden utilitzar per filtrar dades basades en els resultats d'una altra consulta.

Exemple

SELECT employee_name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');

Exercicis pràctics

Exercici 1

Troba els noms dels empleats que treballen en el departament amb el nom 'HR'.

SELECT employee_name
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'HR');

Exercici 2

Troba els noms dels empleats i els noms dels seus departaments.

SELECT employee_name,
       (SELECT department_name FROM departments WHERE departments.department_id = employees.department_id) AS department_name
FROM employees;

Exercici 3

Troba els noms dels empleats que treballen en qualsevol departament situat a 'San Francisco'.

SELECT employee_name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'San Francisco');

Solucions dels exercicis

Solució 1

SELECT employee_name
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'HR');

Solució 2

SELECT employee_name,
       (SELECT department_name FROM departments WHERE departments.department_id = employees.department_id) AS department_name
FROM employees;

Solució 3

SELECT employee_name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'San Francisco');

Resum

En aquesta secció, hem après què són les subconsultes i com es poden utilitzar dins de diverses clàusules SQL. Hem vist exemples pràctics de subconsultes en les clàusules SELECT, FROM i WHERE, i hem practicat amb exercicis per reforçar els conceptes apresos. Les subconsultes són una eina poderosa per a la manipulació i l'anàlisi de dades en SQL, i comprendre com utilitzar-les eficientment és essencial per a qualsevol programador SQL.

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