Postgres-Unterabfragen

Einführung

Wenn Sie eine SQL-Anweisung in PostgreSQL erstellen, müssen Sie möglicherweise eine andere SQL-Abfrage in Ihre Anweisung einbetten. Diese verschachtelten oder eingebetteten Abfragen werden als Unterabfragen bezeichnet und bieten eine effektive Möglichkeit, die benötigten Daten aus einer SQL-Anweisung abzurufen. In diesem Artikel werfen wir einen genaueren Blick auf Postgres-Unterabfragen und überprüfen einige Beispiele, die zeigen, wie sie verwendet werden.

Voraussetzung

Bevor Sie mit diesem Lernprogramm beginnen, stellen Sie sicher, dass Sie Folgendes auf Ihrem Computer installiert und konfiguriert haben:

  • PostgreSQL

Grundlegende PostgreSQL-Kenntnisse sind ebenfalls erforderlich, um dem Tutorial folgen zu können.

Was ist eine Postgres-Unterabfrage?

Wie der Name schon sagt, ist eine Postgres-Abfrage eine Abfrage, die in einer anderen SQL-Abfrage oder -Anweisung verschachtelt ist. Die Unterabfrage gibt Daten zurück, die dann in der Hauptabfrage als Teil der in der Klausel WHERE angegebenen Bedingungen verwendet werden.

Beispieldatensatz erstellen

In diesem Abschnitt erstellen wir einen Beispieldatensatz, den wir in unseren Beispielen verwenden können. Wir müssen uns bei der Postgres-Shell anmelden, um die Datenbank und die Tabelle zu erstellen.

  • Wir können unsere Datenbank mit dem folgenden Befehl erstellen:
1
datenbankprodukt erstellen
  • Wir können dann Tabellen für die Datenbank mit der folgenden Struktur erstellen:
1
2
3
4
5
6
7
8
9
10
TABELLE ERSTELLEN, FALLS NICHT VORHANDEN stock (
id SERIAL PRIMARY KEY,
category_id ZEICHEN VARIIEREND(100),
product_name ZEICHEN VARIIEREND(100),
sku ZEICHEN VARIIEREND(100),
description ZEICHEN VARIIEREND(100),
price INT,
quantity INT
);

Schließlich fügen wir Beispieldatensätze ein:

1
2
3
4
5
6
7
INSERT IN stock (id,category_id, product_name, sku, description, price, quantity)
WERTE
(1,’M01′,’Monitor 22inch ‚,’HW020‘, ‚Computer monitor 22inch‘, 300, 100),
(2,‘ M02′, ‚Thermische Paste‘,’HW040′, ‚CPU thermische paste‘, 2, 130),
(3,‘ M03′, ‚Crimpen Tool‘, ‚HW021‘, ‚Networking-tool‘, 14, 10),
(4,‘ M01′,’Tastatur‘,’HW098′, ‚Computertastatur‘, 3, 25),
(5,‘ M01′,’SSD 250 GB‘,’HW033′, ‚Solid-State-Laufwerk‘, 24, 60);

Erstellen wir nun eine weitere Tabelle mit dem Namen ‚category‘ mit der folgenden Struktur:

1
2
3
4
TABELLE ERSTELLEN, FALLS NICHT VORHANDEN category (
category_id ZEICHEN VARIIEREND(100),
category_name ZEICHEN VARIIEREND(100)
);

Wir werden auch Beispieldatensätze in diese Tabelle einfügen:

1
2
3
4
5
INSERT INTO category (category_id,category_name)
WERTE
(‚M01′,’Pheriperals‘),
(‚M02‘, ‚Verschiedene Materialien‘),
(‚M03′,’Networking‘);

Die beiden Tabellen sollten wie folgt aussehen:

BESTANDSTABELLE

1
2
3
4
5
6
7
8
id / category_id / product_name / sku / beschreibung / preis | quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 / Monitor 22 zoll /HW020 / Computer monitor 22 zoll | 300 | 100
2 | M02 / Thermische Paste /HW040 /CPU thermische paste/2 | 130
3 / M03 / Crimpen Werkzeug/HW021 /Networking tool |14 | 10
4 | M01 / Tastatur /HW098 | Computer Tastatur|3 / 25
5 | M01 / SSD 250 GB/HW033/Solid State Drive|24/60
(5 reihen)

KATEGORIE TABELLE

1
2
3
4
5
6
kategorie_id / kategorie_name
————-+————————-
M01 / Pheriperals
M02 / Verschiedene Materialien
M03 / Vernetzung
(3 Reihen)

Beispiel für Postgres-Unterabfragen

Nachdem wir unseren Beispieldatensatz erstellt haben, können wir uns einige Beispiele ansehen, die die Verwendung von Postgres-Unterabfragen veranschaulichen:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
id,
product_name,
price
FROM
stock
WHERE
price > (
SELECT
AVG (price)
FROM
stock
);

Lassen Sie uns diese Abfrage etwas ausführlicher besprechen.

  • Beachten Sie zunächst die Abfrage, die in Klammern steht:
1
2
3
4
WÄHLEN SIE
AVG (Preis)
VON
stock
  • Postgres führt die Abfragen der Reihe nach aus, beginnend mit der innersten Unterabfrage.
  • Nach der Verarbeitung der Unterabfrage wird das Ergebnis an die äußere Abfrage zurückgegeben.
  • Schließlich wird die äußere Abfrage ausgeführt.

Die Ausgabe sollte ungefähr so aussehen:

1
2
3
4
id / produktname / preis
—-+—————–+——-
1 | Monitor 22 zoll/300
(1 reihe)

Schauen wir uns ein anderes Beispiel an, in dem wir eine Unterabfrage in einer FROM -Klausel verwenden:

1
2
3
4
5
6
WÄHLEN SIE Lager.product_name, the_subquery.category_name
AB Lager,
(Kategorie AUSWÄHLEN.category_id, Kategorie.category_name, COUNT(category_id) AS total
FROM category
GRUPPE NACH Kategorie.category_id, Kategorie.category_name) the_subquery
WOBEI the_subquery.category_id = Lager.kategorie_id;
1
2
3
( Kategorie AUSWÄHLEN.category_id, Kategorie.category_name, COUNT(category_id) AS total
FROM category
GRUPPE NACH Kategorie.category_id, Kategorie.kategorie_name) the_subquery

In der obigen Abfrage haben wir die Unterabfrage unter dem Alias ‚the_subquery‘ platziert. Dieser Alias wird als Verweis auf die Unterabfrage verwendet.

Die Ausgabe sollte ungefähr so aussehen:

1
2
3
4
5
6
7
8
produktname / kategoriename
—————–+————————-
SSD 250 GB / Pheriperals
Tastatur / Pheriperals
Monitor 22 Zoll | Pheriperals
Wärmeleitpaste / Verschiedene Materialien
Crimpzange / Netzwerk
(5 Reihen)

Fazit

Wenn Sie eine komplexere Abfrage erstellen müssen, um die benötigten Daten abzurufen, ist möglicherweise eine Postgres-Unterabfrage erforderlich, um die Aufgabe auszuführen. Die von ihnen zurückgegebenen Ergebnisse werden dann als Teil der Klausel WHERE in der Hauptabfrage verwendet. In diesem Artikel haben wir die Verwendung einer Postgres-Unterabfrage erläutert und einige Beispiele für SQL-Anweisungen mit Unterabfragen betrachtet. Mit diesen Beispielen und Erklärungen haben Sie kein Problem damit, Unterabfragen in Ihre eigenen Datenbankabfragen zu implementieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.