Postgres Subqueries

Inleiding

wanneer u een SQL-statement aanmaakt in PostgreSQL, kunt u merken dat u een andere SQL-query in uw statement moet insluiten. Deze geneste, of ingebedde, query ‘ s staan bekend als subqueries, en ze bieden een effectieve manier om de gegevens die u nodig hebt uit een SQL-statement te krijgen. In dit artikel, we zullen een kijkje nemen op Postgres subqueries en een aantal voorbeelden die laten zien hoe ze te gebruiken.

Prerequisite

voordat u deze tutorial begint, zorg ervoor dat u het volgende op uw machine hebt geïnstalleerd en geconfigureerd:

  • PostgreSQL

basiskennis van PostgreSQL is ook vereist om samen met de tutorial te kunnen volgen.

Wat is een Postgres-Subquery?

zoals de naam al doet vermoeden, is een Postgres query een query genest in een andere SQL query of statement. De subquery geeft gegevens terug die vervolgens worden gebruikt in de hoofdquery als onderdeel van de voorwaarden die zijn gespecificeerd in de WHERE clausule.

Voorbeelddataset

in deze sectie maken we een voorbeelddataset die we in onze voorbeelden kunnen gebruiken. We moeten inloggen op de Postgres shell om de database en tabel aan te maken.

  • we kunnen onze database aanmaken met het volgende commando:
1
databaseproduct aanmaken
  • we kunnen dan tabellen maken voor de database met de volgende structuur:
1
2
3
4
5
6
7
8
9
10
TABEL MAKEN ALS het NIET BESTAAT voorraad (
id SERIAL PRIMAIRE SLEUTEL,
category_id KARAKTER VERSCHILLENDE(100),
product_name KARAKTER VERSCHILLENDE(100),
sku KARAKTER VERSCHILLENDE(100),
beschrijving van KARAKTER VERSCHILLENDE(100),
prijs INT,
hoeveelheid INT
);

Eindelijk, we voegen monster records:

1
2
3
4
5
6
7
PLAATS IN voorraad (id,category_id, product_name, sku-beschrijving, prijs, hoeveelheid)
WAARDEN
(1,’M01′,’Monitor 22inch ‘,’HW020’, ‘Computer monitor 22inch’, 300, 100),
(2,’M02′,’Thermal Paste’,’HW040′, ‘CPU koelpasta’, 2, 130),
(3,’M03′,’tang’,’HW021′, ‘Netwerk-tool’, 14, 10),
(4,’M01′,’Toetsenbord’,’HW098′, ‘het Toetsenbord van de Computer’, 3, 25),
(5,’M01′,’250GB SSD’,’HW033′, ‘Solid State Drive’, 24, 60);

Nu, laten we het maken van een andere tabel met de naam ‘categorie’ met de volgende structuur:

1
2
3
4
TABEL MAKEN ALS het NIET BESTAAT-categorie (
category_id KARAKTER VERSCHILLENDE(100),
category_name KARAKTER VERSCHILLENDE(100)
);

We voegen voorbeeld van records in deze tabel te:

1
2
3
4
5
PLAATS IN categorie (category_id,category_name)
WAARDEN
(‘M01′,’Pheriperals’),
(‘M02’, ‘Diverse Materialen’),
(‘M03′,’Netwerken’);

De twee tabellen moet er als volgt uitzien:

TABEL VOORRAAD

1
2
3
4
5
6
7
8
id | category_id | productnaam | sku | beschrijving | prijs | quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 | Monitor 22inch | HW020 | Computer monitor 22inch | 300 | 100
2 | M02 | Thermische Pasta | HW040 | CPU koelpasta | 2 | 130
3 | M03 | Krimptang | HW021 | Networking tool | 14 | 10
4 | M01 | Toetsenbord | HW098 | Toetsenbord van de Computer | 3 | 25
5 | M01 | SSD 250GB | HW033 | Solid-State-Drive | 24 | 60
(5 rijen)

CATEGORIE TABEL

1
2
3
4
5
6
category_id | category_name
————-+————————-
M01 | Pheriperals
M02 | Diverse Materialen
M03 | Netwerk
(3 rijen)

Postgres Subquery ’s Voorbeeld

Nu hebben we onze voorbeeld dataset, kunnen we kijken naar enkele voorbeelden die illustreren hoe het gebruik van subquery’ s Postgres:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECTEER
id,
product_name,
prijs
VAN
voorraad
WAAR
prijs > (
SELECTEER
AVG (prijs)
VAN
voorraad
);

Laten we bespreken deze query in iets meer detail.

  • let eerst op de zoekopdracht tussen haakjes:
1
2
3
4
SELECTEER
AVG (prijs)
VAN
voorraad
  • Postgres voert de query ‘ s in orde, vanaf de binnenste subquery.
  • na verwerking van de subquery, zal het resultaat worden teruggegeven aan de buitenste query.
  • ten slotte zal de buitenste query worden uitgevoerd.

de uitvoer moet er ongeveer zo uitzien:

1
2
3
4
id | productnaam | prijs
—-+—————–+——-
1 | Monitor 22inch | 300
(1 rij)

Laten we eens kijken naar een ander voorbeeld waarbij we gebruik maken van een subquery in een FROM component:

1
2
3
4
5
6
SELECTEER voorraad.Productnaam, de_subquery.category_name
uit voorraad,
(Selecteer categorie.category_id, categorie.category_name, Tel(category_id) als totaal
uit categorie
groep per categorie.category_id, categorie.category_name) THE_SUBQUERY
WHERE THE_SUBQUERY.category_id = voorraad.categorie_id;
1
2
3
(Selecteer categorie.category_id, categorie.category_name, Tel(category_id) als totaal
uit categorie
groep per categorie.category_id, categorie.category_name) the_subquery

in de bovenstaande query hebben we de subquery onder de alias ’the_subquery’geplaatst. Deze alias zal worden gebruikt als een verwijzing naar de subquery.

de uitvoer moet er ongeveer zo uitzien:

1
2
3
4
5
6
7
8
productnaam | category_name
—————–+————————-
SSD 250GB | Pheriperals
Toetsenbord | Pheriperals
Monitor 22inch | Pheriperals
koelpasta | Diverse Materialen
Krimptang | Netwerk
(5 rijen)

Conclusie

Als u nodig hebt om het bouwen van een meer complexe query om de gegevens te verkrijgen die u nodig hebt, een Postgres subquery kan het nodig zijn om de taak te volbrengen. Subqueries worden genest in de buitenste query; de resultaten die van hen worden geretourneerd worden dan gebruikt als onderdeel van de WHERE clausule in de hoofd query. In dit artikel hebben we uitgelegd hoe je een Postgres subquery kunt gebruiken en hebben we gekeken naar enkele voorbeelden van SQL statements die subqueries bevatten. Met deze voorbeelden en uitleg heb je geen probleem met het implementeren van subqueries in je eigen database queries.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.