🛢️
PostgreSQL
Grokking Algorithm
  • Content
  • Environment
  • Getting Started
    • Introduction
      • What is PostgreSQL
      • Introduction to PostgreSQL sample database
    • Postgres on Windows
      • Install PostgreSQL on Windows
      • Connect to PostgreSQL database server
      • Load the sample database into the PostgreSQL database server
    • Postgres on Linux
    • Install PostgreSQL on macOS
  • Basic
    • Querying Data
      • SELECT
      • Column alias
      • ORDER BY
      • SELECT DISTINCT
    • Filtering Data
      • WHERE
      • AND
      • OR
      • LIMIT
      • FETCH
      • IN
      • BETWEEN
      • LIKE
      • IS NULL
    • Joining Multiple tables
      • Joins
      • Table aliases
      • INNER JOIN
      • LEFT JOIN
      • RIGHT JOIN
      • SELF JOIN
      • FULL OUTER JOIN
      • CROSS JOIN
      • NATURAL JOIN
    • Grouping data
      • GROUP BY
      • HAVING
    • Set Operations
      • UNION
      • INTERSECT
      • EXCEPT
    • Grouping sets, Cube, and Rollup
      • Grouping sets
      • CUBE
      • ROLLUP
    • Subquery
      • Subquery
      • ANY
      • ALL
      • EXISTS
    • Common Table Expressions
      • PostgreSQL CTE
      • Recursive query using CTEs
    • Modifying Data
      • Insert
      • Insert multiple rows
      • Update
      • Update join
      • Delete
      • Upsert
    • Transactions
      • PostgreSQL Transaction
    • Import & Export Data
      • Import CSV file into Table
      • Export PostgreSQL Table to CSV file
    • Managing Tables
      • Data types
      • Create a table
      • Select into
      • Create table as
      • Auto-increment
      • Sequences
      • Identity column
      • Alter table
      • Rename table
      • Add column
      • Drop column
      • Change column data type
      • Rename column
      • Drop table
      • Truncate table
      • Temporary table
      • Copy a table
    • Understanding PostgreSQL constraints
      • Primary key
      • Foreign key
      • UNIQUE constraint
      • CHECK constraint
      • NOT NULL constraint
    • PostgreSQL Data Types in Depth
      • Boolean
      • CHAR, VARCHAR and TEXT
      • NUMERIC
      • Integer
      • DATE
      • Timestamp
      • Interval
      • TIME
      • UUID
      • Array
      • hstore
      • JSON
      • User-defined data types
  • Advanced
  • PG-PGSQL
  • Functions
  • Adminstration
  • API
Powered by GitBook
On this page
  • PostgreSQL INNER JOIN misollari
  • 1. Ikki jadvalni birlashtirish uchun PostgreSQL INNER JOIN-dan foydalanish
  • 2. PostgreSQL INNER JOIN-dan uchta jadvalni birlashtirish uchun foydalaning

Was this helpful?

Edit on GitHub
  1. Basic
  2. Joining Multiple tables

INNER JOIN

PreviousTable aliasesNextLEFT JOIN

Last updated 1 year ago

Was this helpful?

Ushbu qo'llanmada siz PostgreSQL INNER JOIN bandidan foydalangan holda bir nechta jadvallardan ma'lumotlarni qanday tanlashni o'rganasiz.

Aloqa ma'lumotlar bazasida ma'lumotlar odatda bir nechta jadvallarda taqsimlanadi. To'liq ma'lumotlarni tanlash uchun siz ko'pincha bir nechta jadvallardan ma'lumotlarni so'rashingiz kerak.

Ushbu qo'llanmada biz INNER JOIN bandidan foydalangan holda bir nechta jadvallardagi ma'lumotlarni qanday birlashtirishga e'tibor qaratamiz.

Aytaylik, sizda ikkita A va B jadval mavjud. A jadvalida pka ustuni bor, uning qiymati B jadvalining fka ustunidagi qiymatlarga mos keladi.

Ikkala jadvaldagi ma'lumotlarni tanlash uchun siz SELECT iborasida INNER JOIN bandidan quyidagi tarzda foydalanasiz:

SELECT
	pka,
	c1,
	pkb,
	c2
FROM
	A
INNER JOIN B ON pka = fka;

A jadvalini B jadvali bilan birlashtirish uchun siz quyidagi amallarni bajaring:

  • Birinchidan, SELECT bandida ma'lumotlarni tanlamoqchi bo'lgan ikkala jadvaldan ustunlarni belgilang.

  • Ikkinchidan, FROM bandida asosiy jadvalni, ya'ni A jadvalini belgilang.

  • Uchinchidan, INNER JOIN bandida ikkinchi jadvalni (jadval B) belgilang va ON kalit so'zidan keyin birlashma shartini bering.

INNER JOIN qanday ishlaydi. A jadvalidagi har bir satr uchun ichki birlashma pka ustunidagi qiymatni B jadvalidagi har bir satrning fka ustunidagi qiymat bilan solishtiradi:

  • Agar bu qiymatlar teng bo'lsa, ichki birlashma ikkala jadvalning barcha ustunlarini o'z ichiga olgan yangi qator yaratadi va uni natijalar to'plamiga qo'shadi.

  • Agar bu qiymatlar teng bo'lmasa, ichki birlashma ularni e'tiborsiz qoldiradi va keyingi qatorga o'tadi.

Quyidagi Venn diagrammasi INNER JOIN bandi qanday ishlashini ko'rsatadi.

Ko'pincha siz qo'shilishni xohlagan jadvallar bir xil nomdagi ustunlarga ega bo'ladi, masalan, customer_id kabi id ustuni.

Agar so'rovda turli jadvallardagi bir xil nomdagi ustunlarga murojaat qilsangiz, siz xatoga yo'l qo'yasiz. Xatoga yo'l qo'ymaslik uchun siz quyidagi sintaksisdan foydalanib, ushbu ustunlarni to'liq kvalifikatsiya qilishingiz kerak:

table_name.column_name

Amalda, so'rovni o'qish uchun qulayroq qilish uchun birlashtirilgan jadvallarning qisqa nomlarini belgilash uchun jadval taxalluslaridan foydalanasiz.

PostgreSQL INNER JOIN misollari

Keling, INNER JOIN bandidan foydalanishga misollar keltiraylik.

1. Ikki jadvalni birlashtirish uchun PostgreSQL INNER JOIN-dan foydalanish

Ushbu jadvallarda mijoz to'lovni amalga oshirganda, payment jadvaliga yangi qator qo'shiladi.

Har bir mijoz nol yoki ko'p to'lovga ega bo'lishi mumkin. Biroq, har bir to'lov faqat bitta mijozga tegishli. customer_id ustuni ikkita jadval o'rtasidagi munosabatni o'rnatadi.

Quyidagi bayonot ikkala jadvaldan ma'lumotlarni tanlash uchun INNER JOIN bandidan foydalanadi:

SELECT
	customer.customer_id,
	first_name,
	last_name,
	amount,
	payment_date
FROM
	customer
INNER JOIN payment 
    ON payment.customer_id = customer.customer_id
ORDER BY payment_date;

Quyidagi so'rov bir xil natijani qaytaradi. Biroq, u jadval taxalluslaridan foydalanadi.

SELECT
	c.customer_id,
	first_name,
	last_name,
	email,
	amount,
	payment_date
FROM
	customer c
INNER JOIN payment p 
    ON p.customer_id = c.customer_id
WHERE
    c.customer_id = 2;

Ikkala jadvalda bir xil customer_id ustuni bo'lgani uchun siz USING sintaksisidan foydalanishingiz mumkin:

SELECT
	customer_id,
	first_name,
	last_name,
	amount,
	payment_date
FROM
	customer
INNER JOIN payment USING(customer_id)
ORDER BY payment_date;

2. PostgreSQL INNER JOIN-dan uchta jadvalni birlashtirish uchun foydalaning

Quyidagi diagramma uchta jadval o'rtasidagi munosabatni ko'rsatadi: staff, payment, and customer.

  • Har bir xodim nol yoki ko'p to'lovlarni amalga oshiradi. Va har bir to'lov bitta va faqat bitta xodim tomonidan amalga oshiriladi.

  • Har bir mijoz nol yoki ko'p to'lovlarni amalga oshirdi. Har bir to'lov bitta mijoz tomonidan amalga oshiriladi.

Uchta jadvalga qo'shilish uchun birinchi INNER JOIN bandidan keyin ikkinchi INNER JOIN bandini quyidagi so'rov sifatida qo'ying:

SELECT
	c.customer_id,
	c.first_name customer_first_name,
	c.last_name customer_last_name,
	s.first_name staff_first_name,
	s.last_name staff_last_name,
	amount,
	payment_date
FROM
	customer c
INNER JOIN payment p 
    ON p.customer_id = c.customer_id
INNER JOIN staff s 
    ON p.staff_id = s.staff_id
ORDER BY payment_date;

Uchdan ortiq jadvalga qo'shilish uchun siz bir xil texnikani qo'llaysiz.

Ushbu qo'llanmada siz PostgreSQL INNER JOIN bandidan foydalanib, bir nechta jadvallardan ma'lumotlarni qanday tanlashni o'rgandingiz.

Keling, ma'lumotlar bazasida mijozlar va to'lov jadvallarini ko'rib chiqaylik.

namunaviy
output
output
output
image
output
output