SELF JOIN
Ushbu qo'llanmada siz bir xil jadvaldagi satrlarni solishtirish uchun PostgreSQL o'z-o'zidan qo'shilish texnikasidan qanday foydalanishni o'rganasiz.
O'z-o'zidan qo'shilish - jadvalni o'ziga qo'shadigan muntazam birlashma. Amalda, siz odatda ierarxik ma'lumotlarni so'rash yoki bir xil jadval ichidagi satrlarni solishtirish uchun o'z-o'zidan qo'shilishdan foydalanasiz.
O'z-o'zidan qo'shilishni yaratish uchun siz bir xil jadvalni ikki marta turli jadval taxalluslari bilan belgilaysiz va ON
kalit so'zidan keyin birlashma predikatini taqdim etasiz.
Quyidagi so'rov jadvalni o'ziga birlashtiradigan INNER JOIN
dan foydalanadi:
Bu sintaksisda table_name INNER JOIN
bandi yordamida o'ziga birlashtiriladi.
Shuningdek, jadvalni o'ziga quyidagicha qo'shish uchun LEFT JOIN
yoki RIGHT JOIN
bandidan foydalanishingiz mumkin:
PostgreSQL SELF JOIN
misollari
SELF JOIN
misollariKeling, o'z-o'zidan birlashmalardan foydalanishga misollar keltiraylik.
1. Ierarxik ma'lumotlarni so'rash misoli
Namoyish uchun namuna jadvalini tuzamiz.
Aytaylik, sizda quyidagi tashkiliy tuzilma mavjud:
Quyidagi bayonotlar employee
jadvalini yaratadi va jadvalga ba'zi namunaviy ma'lumotlarni kiritadi.
Ushbu employee
jadvalida menejer_id
ustuni employee_id
ustuniga havola qiladi.manager_id
ustunidagi qiymat xodim bevosita bo'ysunadigan menejerni ko'rsatadi. manager_id
ustunidagi qiymat null
bo'lsa, bu xodim hech kimga hisobot bermaydi. Boshqacha qilib aytganda, u eng yaxshi menejer.
Quyidagi so'rov kim kimga hisobot berishini aniqlash uchun o'z-o'zidan qo'shilishdan foydalanadi:
Ushbu so'rov employees jadvaliga ikki marta murojaat qiladi, biri xodim, ikkinchisi menejer. U xodim uchun e
va menejer uchun m
jadval taxalluslaridan foydalanadi.
Qo'shilish predikati employee_id
va menejer_id
ustunlaridagi qiymatlarni moslashtirish orqali xodim/menejer juftligini topadi.
E'tibor bering, yuqori menejer chiqishda ko'rinmaydi.
Natijalar to'plamiga yuqori menejerni kiritish uchun quyidagi so'rovda ko'rsatilgandek INNER JOIN
bandi o'rniga LEFT JOIN
bandidan foydalanasiz:
2. Qatorlarni bir xil jadval bilan solishtirish
DVD ijarasi ma'lumotlar bazasidan quyidagi filmlar jadvaliga qarang:
Quyidagi so'rov bir xil uzunlikdagi barcha filmlar juftligini topadi:
Birlashma predikati bir xil uzunlikdagi (f1.length = f2.length) ikki xil filmga (f1.film_id <> f2.film_id) mos keladi.
Xulosa
PostgreSQL
SELF JOIN
- buINNER JOIN
yokiLEFT JOIN
yordamida jadvalni o'ziga birlashtiradigan oddiy birlashma.SELF JOIN
ierarxik ma'lumotlarni so'rash yoki bitta jadval ichidagi satrlarni solishtirish uchun juda foydali.
Last updated