Postgres Subqueries

Introduzione

Quando si crea un’istruzione SQL in PostgreSQL, è possibile che sia necessario incorporare un’altra query SQL all’interno dell’istruzione. Queste query nidificate o incorporate sono note come subqueries e forniscono un modo efficace per ottenere i dati necessari da un’istruzione SQL. In questo articolo, daremo un’occhiata più da vicino alle sottoquery Postgres e esamineremo alcuni esempi che dimostrano come usarli.

Prerequisito

Prima di iniziare questo tutorial, assicurati di aver installato e configurato quanto segue sulla tua macchina:

  • PostgreSQL

È necessaria anche la conoscenza di base di PostgreSQL per poter seguire il tutorial.

Che cos’è una sottoquery Postgres?

Come suggerisce il nome, una query Postgres è una query nidificata all’interno di un’altra query SQL o istruzione. La sottoquery restituisce i dati che vengono poi utilizzati nella query principale come parte delle condizioni specificate nella clausola WHERE.

Creazione di un set di dati di esempio

In questa sezione, creeremo un set di dati di esempio che possiamo utilizzare nei nostri esempi. Avremo bisogno di accedere alla shell Postgres per creare il database e la tabella.

  • Possiamo creare il nostro database utilizzando il comando riportato di seguito:
1
creare database prodotto
  • Possiamo quindi creare le tabelle del database con la seguente struttura:
1
2
3
4
5
6
7
8
9
10
CREATE TABLE IF NOT EXISTS stock (
id SERIALE CHIAVE PRIMARIA,
category_id CHARACTER VARYING(100),
product_name CHARACTER VARYING(100),
sku CHARACTER VARYING(100),
descrizione CHARACTER VARYING(100),
prezzo INT,
quantità INT
);

Infine, possiamo inserire i record di esempio:

1
2
3
4
5
6
7
INSERIRE IN magazzino (id,category_id, product_name, sku, descrizione, prezzo, quantità)
VALORI
(1,’01’,’Monitor 22inch ‘,’HW020’, ‘monitor del Computer 22inch’, 300, 100),
(2,’M02′,’Pasta Termica’,’HW040′, ‘pasta termica della CPU’, 2, 130),
(3,’M03′,’pinza’,’HW021′, ‘strumento di Networking’, 14, 10),
(4,’M01′,’Tastiera’,’HW098′, ‘Tastiera del Computer’, 3, 25),
(5,’M01′,’SSD 250GB’,’HW033′, ‘Solid State Drive’, 24, 60);

Ora andiamo a creare un’altra tabella con il nome di “categoria” con la seguente struttura:

1
2
3
4
CREATE TABLE IF NOT EXISTS categoria (
category_id CHARACTER VARYING(100),
category_name CHARACTER VARYING(100)
);

inseriremo i record di esempio in questa tabella troppo:

1
2
3
4
5
INSERIRE NELLA categoria (category_id,category_name)
VALORI
(’01’,’dalle periferiche’),
(‘M02’, ‘Materiali vari’),
(‘M03′,”Fare rete’);

Le due tabelle dovrebbe essere simile al seguente:

BORSA TABELLA

1
2
3
4
5
6
7
8
id | category_id | product_name | sku | descrizione | prezzo | quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 | Monitor 22inch | HW020 | monitor del Computer 22inch | 300 | 100
2 | M02 | Pasta Termica | HW040 | CPU pasta termica | 2 | 130
3 | M03 | pinza | HW021 | strumento di Networking | 14 | 10
4 | M01 | Tastiera | HW098 | Tastiera del Computer | 3 | 25
5 | M01 | SSD 250GB | HW033 | ssd | 24 | 60
(5 righe)

CATEGORIA TABELLA

1
2
3
4
5
6
category_id | category_name
————-+————————-
M01 | dalle periferiche
M02 | Materiali vari
M03 | Networking
(3 righe)

Postgres Sottoquery Esempio

Ora che abbiamo creato il nostro set di dati di esempio, possiamo vedere alcuni esempi che illustrano come usare Postgres sottoquery:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELEZIONARE
id
product_name,
prezzo
DA
stock
DOVE
prezzo > (
SELEZIONARE
AVG (prezzo)
DA
stock
);

Cerchiamo di discutere di questa query in un po ‘ più in dettaglio.

  • Innanzitutto, si noti la query racchiusa tra parentesi:
1
2
3
4
SELEZIONARE
AVG (prezzo)
DA
stock
  • Postgres esegue la query in ordine, a partire dall’intimo di una sottoquery.
  • Dopo aver elaborato la sottoquery, il risultato verrà restituito alla query esterna.
  • Infine, verrà eseguita la query esterna.

L’output dovrebbe essere simile a questo:

1
2
3
4
id | product_name | prezzo
—-+—————–+——-
1 | Monitor 22inch | 300
(1 riga)

vediamo un altro esempio in cui si utilizza una subquery in un FROM clausola:

1
2
3
4
5
6
SELEZIONARE stock.product_name, the_subquery.category_name
DAL magazzino,
(SELEZIONA la categoria.category_id, categoria.category_name, COUNT (category_id) COME totale
DALLA categoria
RAGGRUPPA PER categoria.category_id, categoria.category_name) the_subquery
DOVE the_subquery.category_id = stock._id categoria;
1
2
3
(SELEZIONA categoria.category_id, categoria.category_name, COUNT (category_id) COME totale
DALLA categoria
RAGGRUPPA PER categoria.category_id, categoria.category_name) the_subquery

Nella query di cui sopra, abbiamo posizionato la subquery sotto l’alias ‘the_subquery’. Questo alias verrà utilizzato come riferimento alla sottoquery.

L’output dovrebbe essere simile a questo:

1
2
3
4
5
6
7
8
product_name | category_name
—————–+————————-
SSD 250GB | dalle periferiche
Tastiera | dalle periferiche
Monitor 22inch | dalle periferiche
Pasta Termica | Materiali vari
pinza | Networking
(5 righe)

Conclusione

Se hai bisogno di costruire una query più complessa per ottenere i dati di cui avete bisogno, un Postgres subquery può essere necessario per realizzare il compito. Le sottoquery sono annidate all’interno della query esterna; i risultati restituiti da esse vengono quindi utilizzati come parte della clausola WHERE nella query principale. In questo articolo, abbiamo spiegato come utilizzare una sottoquery Postgres e abbiamo esaminato alcuni esempi di istruzioni SQL che includono sottoquery. Con questi esempi e spiegazioni, non avrai problemi a implementare sottoquery nelle tue query di database.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.