🛢️
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

Was this helpful?

Edit on GitHub
  1. Basic
  2. Joining Multiple tables

FULL OUTER JOIN

PreviousSELF JOINNextCROSS JOIN

Last updated 1 year ago

Was this helpful?

Ushbu qo'llanmada siz ikki yoki undan ortiq jadvallardan ma'lumotlarni so'rash uchun PostgreSQL FULL OUTER JOIN-dan qanday foydalanishni o'rganasiz.

Aytaylik, siz ikkita jadvalni toʻliq tashqi birlashtirishni amalga oshirmoqchisiz: A va B. Quyida FULL OUTER JOIN sintaksisi tasvirlangan:

SELECT * FROM A
FULL [OUTER] JOIN B on A.id = B.id;

Ushbu sintaksisda OUTER kalit so'zi ixtiyoriydir.

To'liq tashqi birlashma chap va o'ng birlashma natijalarini birlashtiradi.

Agar birlashtirilgan jadvaldagi satrlar mos kelmasa, to'liq tashqi birlashma mos keladigan qatorga ega bo'lmagan jadvalning har bir ustuni uchun NULL qiymatlarni o'rnatadi.

Agar bitta jadvaldagi satr boshqa jadvaldagi satrga to'g'ri kelsa, natija qatori ikkala jadvaldagi qatorlar ustunlaridan to'ldirilgan ustunlarni o'z ichiga oladi.

Quyidagi Venn diagrammasi FULL OUTER JOIN operatsiyasini tasvirlaydi:

PostgreSQL FULL OUTER JOIN misoli

Birinchidan, namoyish qilish uchun ikkita yangi jadval yarating: employees va departments:

DROP TABLE IF EXISTS departments;
DROP TABLE IF EXISTS employees;

CREATE TABLE departments (
	department_id serial PRIMARY KEY,
	department_name VARCHAR (255) NOT NULL
);

CREATE TABLE employees (
	employee_id serial PRIMARY KEY,
	employee_name VARCHAR (255),
	department_id INTEGER
);

Har bir bo'limda nol yoki ko'p xodimlar mavjud va har bir xodim nol yoki bitta bo'limga tegishli.

Ikkinchidan, departments va employees jadvallariga namunaviy ma'lumotlarni kiriting.

INSERT INTO departments (department_name)
VALUES
	('Sales'),
	('Marketing'),
	('HR'),
	('IT'),
	('Production');

INSERT INTO employees (
	employee_name,
	department_id
)
VALUES
	('Bette Nicholson', 1),
	('Christian Gable', 1),
	('Joe Swank', 2),
	('Fred Costner', 3),
	('Sandra Kilmer', 4),
	('Julia Mcqueen', NULL);

Uchinchidan, departments va employees jadvallaridan ma'lumotlarni so'rash:

SELECT * FROM departments;
SELECT * FROM employees;

To'rtinchidan, departments va employees jadvallaridan ma'lumotlarni so'rash uchun FULL OUTER JOIN dan foydalaning.

SELECT
	employee_name,
	department_name
FROM
	employees e
FULL OUTER JOIN departments d 
        ON d.department_id = e.department_id;

Natijalar to'plamiga bo'limga tegishli bo'lgan har bir xodim va xodimi bo'lgan har bir bo'lim kiradi. Bundan tashqari, u bo'limga tegishli bo'lmagan har bir xodimni va xodimi bo'lmagan har bir bo'limni o'z ichiga oladi.

Xodimlari yo'q bo'limni topish uchun siz WHERE bandidan quyidagi tarzda foydalanasiz:

SELECT
	employee_name,
	department_name
FROM
	employees e
FULL OUTER JOIN departments d 
        ON d.department_id = e.department_id
WHERE
	employee_name IS NULL;

Natija shuni ko'rsatadiki, Production bo'limida xodimlar yo'q.

Hech qanday bo'limga tegishli bo'lmagan xodimni topish uchun siz WHERE bandidagi department_name NULL belgisini quyidagi bayonot sifatida tekshiring:

SELECT
	employee_name,
	department_name
FROM
	employees e
FULL OUTER JOIN departments d ON d.department_id = e.department_id
WHERE
	department_name IS NULL;

Natijadan aniq ko'rinib turibdiki, Juila Makkuin hech qanday bo'limga tegishli emas.

Ushbu qoʻllanmada siz ikki yoki undan ortiq jadvallarni birlashtirish uchun PostgreSQL FULL OUTER JOIN bandidan qanday foydalanishni oʻrgandingiz.

output
output
output
output
output
output