Zapytania podrzędne Postgres

wprowadzenie

podczas tworzenia instrukcji SQL w PostgreSQL może okazać się konieczne osadzenie innego zapytania SQL w instrukcji. Te zagnieżdżone lub osadzone zapytania są znane jako zapytania podrzędne i zapewniają skuteczny sposób na uzyskanie potrzebnych danych z instrukcji SQL. W tym artykule przyjrzymy się bliżej zapytaniom podrzędnym Postgres i przejrzymy kilka przykładów, które pokazują, jak z nich korzystać.

warunek wstępny

przed rozpoczęciem tego samouczka upewnij się, że zainstalowałeś i skonfigurowałeś następujące elementy na swoim komputerze:

  • PostgreSQL

podstawowa wiedza PostgreSQL jest również wymagana, aby móc śledzić wraz z samouczkiem.

co to jest Subquery Postgres?

jak sama nazwa wskazuje, zapytanie Postgres jest zapytaniem zagnieżdżonym wewnątrz innego zapytania lub instrukcji SQL. Subquery zwraca dane, które są następnie używane w głównym zapytaniu jako część warunków określonych w klauzuli WHERE.

Tworzenie przykładowego zestawu danych

w tej sekcji utworzymy przykładowy zestaw danych, który możemy wykorzystać w naszych przykładach. Będziemy musieli zalogować się do powłoki Postgres, aby utworzyć bazę danych i tabelę.

  • możemy utworzyć naszą bazę danych za pomocą następującego polecenia:
1
Utwórz produkt bazy danych
  • następnie możemy utworzyć tabele dla bazy danych o następującej strukturze:
1
2
3
4
5
6
7
8
9
10
Utwórz tabelę, jeśli nie istnieje stock (
ID szeregowy klucz podstawowy,
category_id znak zmienny(100),
product_name znak zmienny(100),
SKU znak zmienny(100),
opis znak zmienny(100),
Cena INT,
ilość INT
);

na koniec wstawiamy przykładowe rekordy:

1
2
3
4
5
6
7
INSERT INTO stock(id,category_id, product_name, SKU, description, price, quantity)
VALUES
(1,’M01′,’Monitor 22inch’, 'HW020′, 'Monitor Komputerowy 22inch’, 300, 100),
(2,’M02′, 'pasta termiczna’, 'HW040′, 'pasta termiczna CPU’, 2, 130),
(3,’M03″, „Narzędzie Do Zaciskania”, „HW021”, „narzędzie sieciowe’, 14, 10),
(4,’M01′, 'Keyboard’, 'HW098′, 'klawiatura komputerowa’, 3, 25),
(5,’M01′, 'SSD 250GB’, 'HW033′, 'Solid State Drive’, 24, 60);

teraz utwórzmy kolejną tabelę o nazwie „Kategoria”, używając następującej struktury:

1
2
3
4
Utwórz tabelę, jeśli nie istnieje kategoria (
zmienny znak category_id (100),
zmienny znak category_name(100)
);

wstawimy również przykładowe rekordy do tej tabeli:

1
2
3
4
5
INSERT INTO category (category_id,category_name)
(’M01′,’Pheriperales’),
(’M02′, 'Różne materiały’),
(’M03′, 'sieci’);

dwie tabele powinny wyglądać następująco:

tabela zapasów

1
2
3
4
5
6
7
8
id / category_id / product_name / SKU / description | price / quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 | Monitor 22 cale | hw020 | monitor komputerowy 22 cale | 300/100
2 | M02 | pasta termiczna | Hw040 | pasta termiczna procesora | 2 | 130
3 | M03 | Narzędzie Do Zaciskania | hw021 | narzędzie sieciowe | 14/10
4 | M01 | Klawiatura | Hw098 | klawiatura komputerowa | 3 | 25
5 | M01 | SSD 250GB | Hw033 | Dysk Ssd / 24 / 60
(5 rzędów)

tabela kategorii

1
2
3
4
5
6
category_id / category_name
————-+————————-
M01 / Pheriperales
M02 / Różne materiały
M03 / Networking
(3 rzędy)

przykład zapytań podrzędnych Postgres

teraz, gdy stworzyliśmy nasz przykładowy zestaw danych, możemy spojrzeć na kilka przykładów, które ilustrują, jak używać zapytań podrzędnych Postgres:

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

omówmy to zapytanie nieco bardziej szczegółowo.

  • najpierw zwróć uwagę na zapytanie zawarte w nawiasach:
1
2
3
4
wybierz
średnia (cena)
z
zapasów
  • Postgres wykonuje zapytania w kolejności, zaczynając od najskrytszego podquery.
  • po przetworzeniu zapytania podrzędnego wynik zostanie zwrócony do zapytania zewnętrznego.
  • na koniec zostanie wykonane zapytanie zewnętrzne.

wyjście powinno wyglądać mniej więcej tak:

1
2
3
4
id / product_name / price
—-+—————–+——-
1 | Monitor 22 cali / 300
(1 rząd)

spójrzmy na inny przykład, w którym używamy zapytania podrzędnego w klauzuli FROM :

1
2
3
4
5
6
wybierz stock.product_name, the_subquery.category_name
FROM stock,
(wybierz kategorię.category_id, category.category_name, COUNT (category_id) AS total
FROM category
GROUP BY category.category_id, category.category_name) the_subquery
WHERE THE_SUBQUERY.category_id = stock.category_id;
1
2
3
(wybierz kategorię.category_id, category.category_name, COUNT (category_id) AS total
FROM category
GROUP BY category.category_id, category.category_name) the_subquery

w powyższym zapytaniu umieściliśmy subquery pod aliasem 'the_subquery’. Alias ten będzie używany jako odniesienie do podquery.

wyjście powinno wyglądać mniej więcej tak:

1
2
3
4
5
6
7
8
product_name / category_name
—————–+————————-
SSD 250GB / Pheriperal
Klawiatura / Pheriperal
Monitor 22 cali / Pheriperal
pasta termiczna / Różne materiały
Narzędzie Do Zaciskania / sieć
(5 rzędów)

wniosek

jeśli potrzebujesz skonstruować bardziej złożone zapytanie, aby uzyskać potrzebne dane, do wykonania zadania może być konieczne subquery Postgres. Zapytania podrzędne są zagnieżdżane wewnątrz zapytania zewnętrznego; zwracane z nich wyniki są następnie używane jako część klauzuli WHERE w zapytaniu głównym. W tym artykule wyjaśniliśmy, jak używać podzapytania Postgres i przyjrzeliśmy się przykładom instrukcji SQL, które zawierają podzapytania. Dzięki tym przykładom i wyjaśnieniom nie będziesz miał problemu z implementacją zapytań podrzędnych we własnych zapytaniach do bazy danych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.