Johdanto
kun luot SQL-lauseketta PostgreSQL: ssä, saatat huomata, että sinun täytyy upottaa toinen SQL-kysely lausekkeeseesi. Nämä sisäkkäiset tai upotetut kyselyt tunnetaan alijonoina, ja ne tarjoavat tehokkaan tavan saada tarvitsemasi tiedot SQL-lausekkeesta. Tässä artikkelissa, otamme lähemmin Postgres subqueries ja tarkistaa joitakin esimerkkejä, jotka osoittavat, miten niitä käytetään.
Ennakkovaatimus
ennen kuin aloitat tämän opetusohjelman, varmista, että olet asentanut ja määrittänyt koneeseesi seuraavat asetukset:
- PostgreSQL
PostgreSQL: n perusosaamista vaaditaan myös, jotta sitä voi seurata opetusohjelman mukana.
mikä on Postgres-alalaji?
kuten nimestä voi päätellä, Postgres-kysely on toisen SQL-kyselyn tai lausekkeen sisään sisäkkäinen kysely. Alikuvaus palauttaa tiedot, joita sitten käytetään pääkyselyssä osana WHERE
lausekkeessa määriteltyjä ehtoja.
luodaan Otosaineisto
tässä osiossa luodaan otosaineisto, jota voimme käyttää esimerkeissämme. Meidän täytyy kirjautua Postgres-komentotulkkiin luodaksemme tietokannan ja taulukon.
- voimme luoda tietokantamme seuraavalla komennolla:
1
|
luo tietokantatuote
|
- voimme sitten luoda taulukoita tietokantaan, jossa on seuraava rakenne:
1
2 3 4 5 6 7 8 9 10 |
Luo taulu, jos sitä ei ole varastossa (
id serial PRIMARY KEY, category_id CHARACTER variable (100), product_name CHARACTER variable (100), description CHARACTER variable (100), price INT, quantity INT ); |
lopuksi lisäämme näytetiedot:
1
2 3 4 5 6 7 |
lisää varastoon(id,category_id, product_name, sku, description, price, quantity)
arvot (1, ”M01”, ”Monitor 22inch”, ”HW020”, ”Computer monitor 22inch’, 300, 100), (2,’M02″, ”Thermal Paste”, ”HW040”, ”CPU thermal paste’, 2, 130), (3,’M03″, ”puristustyökalu”, ”HW021”, ”Verkostoitumistyökalu’, 14, 10), (4,’M01′, ’Keyboard’, ’Hw098’, ’Computer Keyboard’, 3, 25), (5,’M01″, ”SSD 250GB”, ”HW033”, ”Solid State Drive”, 24, 60); |
nyt, Let ’s luoda toisen taulukon nimeltä ’Luokka’ käyttäen seuraavaa rakennetta:
1
2 3 4 |
Luo taulukko, jos sitä ei ole Luokka (
category_id-merkki vaihteleva(100), category_name-merkki vaihteleva(100) ); |
lisäämme näytetiedot myös tähän taulukkoon.:
1
2 3 4 5 |
lisätään luokkaan (category_id,category_name)
arvot (”M01”, ”Pheriperals”), (”M02”, ”sekalaiset Materiaalit”), (”M03”, ”verkostoituminen’); |
kahden taulukon tulisi näyttää seuraavilta:
KANTATAULUKKO
1
2 3 4 5 6 7 8 |
id / category_id | product_name / sku | description / price | quantity
—-+————-+—————–+——-+————————-+——-+———- 1 | M01 | Monitor 22inch | HW020 | Computer monitor 22inch | 300 | 100 2 | M02 | Thermal Paste | HW040 | CPU thermal paste | 2 | 130 3 | M03 | Crimping Tool | HW021 | Networking tool | 14 | 10 4 | M01 | Keyboard | HW098 | Computer Keyboard | 3 | 25 5 | M01 | SSD 250gb | HW033 / Solid State Drive / 24 / 60 (5 riviä) |
Luokka taulukko
1
2 3 4 5 6 |
category_id | category_nimi
————-+————————- M01 / Pheriperals M02 / sekalaiset Materiaalit M03 / verkostoituminen (3 riviä) |
Postgres Subqueries esimerkki
nyt kun olemme luoneet otosaineistomme, voimme tarkastella joitakin esimerkkejä, jotka havainnollistavat Postgres subqueriesin käyttöä:
1
2 3 4 5 6 7 8 9 10 11 12 13 |
valitse
id, tuotte_nimi, hinta FROM stock WHERE price > ( SELECT AVG (price) FROM stock ); |
keskustellaan tästä kyselystä hieman tarkemmin.
- huomaa ensin suluissa oleva kysely:
1
2 3 4 |
valitse
AVG (hinta) alkaen varastossa |
- Postgres suorittaa kyselyt järjestyksessä alkaen sisimmästä alaluokasta.
- alakerran käsittelyn jälkeen tulos palautetaan ulompaan hakuun.
- lopulta ulompi kysely suoritetaan.
tuotoksen pitäisi näyttää jotakuinkin tältä:
1
2 3 4 |
id / tuotteen_nimi | hinta
—-+—————–+——- 1 | monitori 22inch / 300 (1 rivi) |
katsotaanpa toista esimerkkiä, jossa käytetään alalajia FROM
lausekkeessa:
1
2 3 4 5 6 |
valitse varasto.Tuotteen nimi, tuote.kategoria_nimi
kannasta, (Valitse kategoria.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 = kanta.kategori_id; |
1
2 3 |
(Valitse kategoria.category_id, category.category_name, COUNT (category_id) as total
from category GROUP BY category.category_id, category.category_nimi) the_subquery |
yllä olevassa kyselyssä, sijoitimme subquery peitenimellä ’the_subquery’. Tätä peitenimeä käytetään viittauksena alalajiin.
tuotoksen pitäisi näyttää jotakuinkin tältä:
1
2 3 4 5 6 7 8 |
tuotteen_nimi | kategori_nimi
—————–+————————- SSD 250GB / Pheriperals Keyboard | Pheriperals Monitor 22inch | Pheriperals Thermal Paste | sekalaiset Materiaalit puristustyökalu / Verkko (5 riviä) |
johtopäätös
jos tarvitset monimutkaisemman kyselyn saadaksesi tarvitsemasi tiedot, Postgres-alikuvaus voi olla tarpeen tehtävän suorittamiseksi. Alikyselyt ovat sisäkkäin ulomman kyselyn sisällä; niistä palautettuja tuloksia käytetään sitten osana WHERE
– lauseketta pääkyselyssä. Tässä artikkelissa, selitimme, miten käyttää Postgres subquery ja tarkasteltiin joitakin esimerkkejä SQL lausuntoja, jotka sisältävät subqueries. Näillä esimerkeillä ja selityksillä, sinulla ei ole ongelmia toteuttaa subqueries omassa tietokantakyselyissä.