Query Nidificate
Scorri per mostrare il menu
L'amministrazione scolastica è soddisfatta dei tuoi recenti risultati ed è desiderosa di proseguire.
Con l'inizio delle vacanze estive, hai l'opportunità di esplorare nuovi metodi e migliorare le tue competenze SQL.
L'attenzione sarà rivolta alle query annidate, un concetto fondamentale in SQL.
Le query annidate, o sottoquery annidate, sono componenti fondamentali di SQL in cui una query è contenuta all'interno di un'altra query. Queste strutture facilitano diverse operazioni come il filtraggio dei dati, il calcolo e il recupero, richiedendo spesso l'integrazione di sottoquery.
Osserva un esempio dal database aziendale. Con la crescita dell'azienda, è stata aggiunta una nuova tabella department. Questo modifica il funzionamento del nostro database.
Consulta la struttura della nuova tabella per comprenderne il ruolo nel database:
La nuova tabella contiene dipartimenti, i loro tipi e i budget. Nella tabella employee, come ricorderai, sono presenti informazioni sul dipartimento a cui appartiene ciascun dipendente.
Considerare un esempio in cui vengono utilizzate query annidate per recuperare quei dipendenti che lavorano in dipartimenti con budget pari o inferiori a $500.000:
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Una clausola WHERE viene utilizzata per specificare che il nome del dipartimento deve essere presente nella tabella recuperata con la query interna.
Scomporre questa query in due query separate per vedere come funziona. Per prima cosa, recuperare i nomi dei dipartimenti con budget pari o inferiori a $500.000 (query interna):
123SELECT name FROM department WHERE budget <= 500000
Ora, considerando il risultato ottenuto, scrivere la seconda query per recuperare informazioni sui dipendenti di questi reparti:
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Il risultato di questa query sarà uguale a quello della prima query.
Ecco una spiegazione passo dopo passo:
-
La query interna recupera i
namesdei dipartimenti necessari; -
La clausola
WHEREverifica se questi dipartimenti sono nella tabella restituita dalla query interna; -
Si ottiene il risultato desiderato.
Ecco la sintassi di base per una query interna:
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
Quando si utilizzano query annidate, tenere presenti questi punti importanti:
-
Risultato singolo nella sottoquery: assicurarsi che la query annidata restituisca solo una colonna. Se utilizzata in un confronto, dovrebbe idealmente restituire un solo valore. Questo è fondamentale per operatori come
=,>,<,>=,<=,<>; -
Tipi di dati: il tipo di dato della colonna restituita deve corrispondere a quello della colonna con cui viene confrontata, per evitare errori;
-
Ottimizzazione: le query annidate possono essere lente, soprattutto se eseguite per ogni riga della query principale;
-
Utilizzo dell'operatore IN: le query annidate spesso utilizzano l'operatore
INper verificare la presenza di valori in un sottoinsieme. È anche possibile utilizzare operatori di confronto per condizioni più complesse.
1. Che cos'è una query annidata in SQL?
2. Quale operatore SQL è comunemente utilizzato con le query annidate per verificare i valori in un sottoinsieme?
3. Perché è importante che il tipo di dato della colonna restituita da una query annidata corrisponda alla colonna con cui viene confrontata?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione