Mavzu: SQL Left Join Operation.
Reja:
1.Left Join operatsiyasining qismlari.
2.Left Join operatsiyasining imkoniyatlari.
sintaksis
1-jadvaldan [ CHap | RIGHT ] JOIN table2 ON table1.field1 compopr table2.field2
LEFT JOIN va RIGHT JOIN operatsiyalari quyidagi qismlarga ega:
Qism
Tavsif
1-jadval, 2-jadval
Yozuvlar birlashtirilgan jadvallarning nomlari.
maydon 1, maydon 2
Birlashtirilgan maydonlarning nomlari. maydonlar bir xil turdagi ma'lumotlarga ega bo'lishi va bir xil turdagi ma'lumotlarni o'z ichiga olishi kerak, lekin ular bir xil nomga ega bo'lishi shart emas.
kompopr
Har qanday aloqador taqqoslash operatori: "=," "<," ">," "<=," ">=" yoki "<>".
Izohlar
Chap tashqi birikmani yaratish uchun LEFT JOIN operatsiyasidan foydalaning. chap tashqi birlashmalar ikkinchi (o'ng) jadvaldagi yozuvlar uchun mos qiymatlar bo'lmasa ham, ikkita jadvalning birinchi (chap) qismidagi barcha yozuvlarni o'z ichiga oladi.
To'g'ri tashqi birikma yaratish uchun RIGHT JOIN operatsiyasidan foydalaning. o'ng tashqi birlashmalarga ikkita jadvalning ikkinchi (o'ng) qismidagi barcha yozuvlar kiradi, hatto birinchi (chap) jadvaldagi yozuvlar uchun mos qiymatlar bo'lmasa ham.
masalan, siz barcha bo'limlarni, shu jumladan ularga xodimlar biriktirilmaganlarni ham tanlash uchun Bo'limlar (chapda) va Xodimlar (o'ngda) jadvallari bilan LEFT JOIN tugmasidan foydalanishingiz mumkin. Barcha xodimlarni, shu jumladan bo'limga tayinlanmaganlarni tanlash uchun siz RIGHT JOIN dan foydalanasiz.
quyidagi misol CategoryID maydonidagi Kategoriyalar va Mahsulotlar jadvallariga qanday qo'shilishingiz mumkinligini ko'rsatadi. So'rov barcha toifalar ro'yxatini, jumladan, hech qanday mahsulotga ega bo'lmaganlarni chiqaradi:
Kategoriya nomini tanlang,
Mahsulot nomi
FROM toifalar QO'SHILMALAR Mahsulotlar
oN Categories.CategoryID = Mahsulotlar.CategoryID;
Ushbu misolda CategoryID birlashtirilgan maydondir, lekin u so'rov natijalariga kiritilmagan, chunki u SELECT iborasiga kiritilmagan. birlashtirilgan maydonni kiritish uchun SELECT bayonotiga maydon nomini kiriting — bu holda, Categories.CategoryID.
Eslatma
Faqat birlashtirilgan maydonlardagi ma'lumotlar bir xil bo'lgan yozuvlarni o'z ichiga olgan so'rovni yaratish uchun INNER JOIN operatsiyasidan foydalaning.
LEFT JOIN yoki RIGHT JOIN INNER JOIN ichiga joylashtirilishi mumkin, lekin INNER JOINni LEFT JOIN yoki RIGHT JOIN ichiga joylashtirish mumkin emas. Boshqa birlashmalar ichida birlashmalarni qanday joylashtirishni koʻrish uchun INNER JOIN mavzusidagi joylashtirish muhokamasiga qarang.
Siz bir nechta ON bandlarini bog'lashingiz mumkin. Bu qanday amalga oshirilishini ko'rish uchun INNER JOIN mavzusidagi bog'lanish bandining muhokamasiga qarang.
Agar siz Memo yoki OLE ob'ekt ma'lumotlarini o'z ichiga olgan maydonlarga qo'shilishga harakat qilsangiz, xatolik yuz beradi.
Misol
Bu misol:
Xodimlar jadvalida gipotetik bo'lim nomi va bo'lim identifikatori maydonlari mavjudligini taxmin qiladi. E'tibor bering, bu maydonlar Northwind ma'lumotlar bazasi xodimlari jadvalida mavjud emas.
Barcha bo'limlarni, shu jumladan xodimlari bo'lmaganlarni tanlaydi.
SELECT iborasi misolida topishingiz mumkin bo'lgan EnumFields protsedurasini chaqiradi.
Sub LeftRightJoinX()
Dim dbs ma'lumotlar bazasi sifatida, birinchi navbatda Recordset sifatida
' Shimolga yo'lni kiritish uchun ushbu qatorni o'zgartiring
' kompyuteringizda.
Dbs = OpenMa'lumotlar bazasini o'rnating
sintaksis
1-jadvaldan [ CHap | RIGHT ] JOIN table2 ON table1.field1 compoprtable2.field2
LEFT JOIN va RIGHT JOIN operatsiyalari quyidagi qismlarga ega:
Qism
Tavsif
1-jadval, 2-jadval
Yozuvlar birlashtirilgan jadvallarning nomlari.
maydon 1, maydon 2
Birlashtirilgan maydonlarning nomlari. maydonlar bir xil turdagi ma'lumotlarga ega bo'lishi va bir xil turdagi ma'lumotlarni o'z ichiga olishi kerak, lekin ular bir xil nomga ega bo'lishi shart emas.
Har qanday aloqador taqqoslash operatori: "=," "<," ">," "<=," ">=" yoki "<>".
Izohlar
Chap tashqi birikmani yaratish uchun LEFT JOIN operatsiyasidan foydalaning. chap tashqi birlashmalar ikkinchi (o'ng) jadvaldagi yozuvlar uchun mos qiymatlar bo'lmasa ham, ikkita jadvalning birinchi (chap) qismidagi barcha yozuvlarni o'z ichiga oladi.
To'g'ri tashqi birikma yaratish uchun RIGHT JOIN operatsiyasidan foydalaning. o'ng tashqi birlashmalarga ikkita jadvalning ikkinchi (o'ng) qismidagi barcha yozuvlar kiradi, hatto birinchi (chap) jadvaldagi yozuvlar uchun mos qiymatlar bo'lmas ekan.
Masalan, siz barcha bo'limlarni, shu jumladan ularga xodimlar biriktirilmaganlarni ham tanlash uchun Bo'limlar (chapda) va Xodimlar (o'ngda) jadvallari bilan LEFT JOIN tugmasidan foydalanishingiz mumkin. Barcha xodimlarni, shu jumladan bo'limga tayinlanmaganlarni tanlash uchun siz RIGHT JOIN dan foydalanasiz.
quyidagi misol CategoryID maydonidagi Kategoriyalar va Mahsulotlar jadvallariga qanday qo'shilishingiz mumkinligini ko'rsatadi. So'rov barcha toifalar ro'yxatini, jumladan, hech qanday mahsulotga ega bo'lmaganlarni chiqaradi:
Kategoriya nomini tanlang,
Mahsulot nomi
FROM toifalar QO'SHILMALAR Mahsulotlar
oN Categories.CategoryID = Mahsulotlar.CategoryID;
Ushbu misolda CategoryID birlashtirilgan maydondir, lekin u so'rov natijalariga kiritilmagan, chunki u SELECT iborasiga kiritilmagan.
BirlashtiradiganBirlashtiradigan maydonni kiritish uchun SELECT bayonotiga maydon nomini kiriting — bu holda, Categories.CategoryID.
Eslatma
Faqat birlashtirilgan maydonlardagi ma'lumotlar bir xil bo'lgan yozuvlarni o'z ichiga olgan so'rovni yaratish uchun INNER JOIN operatsiyasidan foydalaning.
LEFT JOIN yoki RIGHT JOIN INNER JOIN ichiga joylashtirilishi mumkin, lekin INNER JOINni LEFT JOIN yoki RIGHT JOIN ichiga joylashtirish mumkin emas. Boshqa birlashmalar ichida birlashmalarni qanday joylashtirishni koʻrish uchun INNER JOIN mavzusidagi joylashtirish muhokamasiga qarang.
Siz bir nechta ON bandlarini bog'lashingiz mumkin. Bu qanday amalga oshirilishini ko'rish uchun INNER JOIN mavzusidagi bog'lanish bandining muhokamasiga qarang.
LEFT JOIN yoki RIGHT JOIN INNER JOIN ichiga joylashtirilishi mumkin, lekin INNER JOINni LEFT JOIN yoki RIGHT JOIN ichiga joylashtirish mumkin emas. Boshqa birlashmalar ichida birlashmalarni qanday joylashtirishni koʻrish uchun INNER JOIN mavzusidagi joylashtirish muhokamasiga qarang.
Siz bir nechta ON bandlarini bog'lashingiz mumkin. Bu qanday amalga oshirilishini ko'rish uchun INNER JOIN mavzusidagi bog'lanish bandining muhokamasiga qarang.
Agar siz Memo yoki OLE ob'ekt ma'lumotlarini o'z ichiga olgan maydonlarga qo'shilishga harakat qilsangiz, xatolik yuz beradi.
Misol
Bu misol:
Xodimlar jadvalida gipotetik bo'lim nomi va bo'lim identifikatori maydonlari mavjudligini taxmin qiladi.
E'tibor bering, bu maydonlar Northwind ma'lumotlar bazasi xodimlari jadvalida mavjud emas.
Barcha bo'limlarni, shu jumladan xodimlari bo'lmaganlarni tanlaydi.
SELECT iborasi misolida topishingiz mumkin bo'lgan EnumFields protsedurasini chaqiradi.
Sub LeftRightJoinX()
Dim dbs ma'lumotlar bazasi sifatida, birinchi navbatda Recordset sifatida
' Shimolga yo'lni kiritish uchun ushbu qatorni o'zgartiring
' kompyuteringizda.
Dbs = OpenMa'lumotlar bazasini o'rnating
Это изображение, автор: Неизвестный автор, лицензия: CC BY
"Barcha bo'limlarni, shu jumladan "xodimlarsiz" bo'limlarni tanlang. Rst = dbs.OpenRecordset _ ("Tanlang [Bo'lim nomi], " _ & "Ism va Chr(32) va Familiya AS " _ & "Bo'limlardan CHAL QO'SHILGAN Xodimlar " _ & "BO'limlarda.[Bo'lim ID] = " _ & "Xodimlar.[boʻlim ID] " _ & "BUYURTMA BY [Boʻlim nomi];") ' Yozuvlar toʻplamini toʻldiring. rst.MoveLast ' Recordset mazmunini chop etish uchun EnumFields-ga qoʻngʻiroq qiling. Recordset obyekti va kerakli ‘ maydon kengligidan oʻting. EnumFields rst, 20 dbs.End Subni yoping
Mavzu
Nur
Qorong'i
Yuqori kontrast
Do'stlaringiz bilan baham: |