Sobes.tech
Junior

Cosa sono le sottoquery in SQL?

sobes.tech AI

Risposta dell'AI

Una sottoquery (o query annidata) in SQL è una query SELECT inserita all'interno di un'altra istruzione SQL (SELECT, INSERT, UPDATE, DELETE, CREATE TABLE). La sottoquery viene eseguita per prima e il suo risultato viene utilizzato dalla query esterna.

  • Utilizzo:

    • Nella clausola WHERE per filtrare i dati.
    • Nella clausola FROM come tabella virtuale (tabella derivata).
    • Nella clausola SELECT per mostrare dati aggregati o correlati (sottoquery scalare).
    • Con gli operatori IN, EXISTS, ANY, ALL.
  • Vantaggi:

    • Permettono di eseguire interrogazioni di dati complesse.
    • Migliorano la leggibilità delle query rispetto alle join complesse.
    • Possono essere usate come fonte di dati.
  • Tipi:

    • Scalare: Restituisce un singolo valore (una riga e una colonna).
    • Multi-riga: Restituisce una colonna e più righe. Usato con IN, ANY, ALL.
    • Multi-colonna: Restituisce più colonne. Usato raramente.
    • Correlata: Dipende dalla query esterna e viene eseguita per ogni riga della query esterna.

Esempio di utilizzo in WHERE:

SELECT
    order_id,
    customer_id,
    order_date
FROM
    orders
WHERE
    customer_id IN (
        SELECT
            customer_id
        FROM
            customers
        WHERE
            city = 'New York'
    );

Esempio di utilizzo in FROM:

SELECT
    customer_name,
    total_orders
FROM (
    SELECT
        c.customer_name,
        COUNT(o.order_id) AS total_orders
    FROM
        customers c
    JOIN
        orders o ON c.customer_id = o.customer_id
    GROUP BY
        c.customer_name
) AS customer_order_counts
WHERE
    total_orders > 10;