Internetda bir ushbu rasmni ko'rib ushbu maqolani yozish niyati paydo bo'ladi.
Bir nechta advallardan malumotlarni olishni o'rganamiz. Buning uchun biz JOIN lardan foydalanamiz.
Yuqoridagi rasmga e'tibor bergan bo'lsangiz 2 ta , A va B aylanalar mavjud, tasavvur qiling ushbu A va B lar bizning jadvallarimiz, ya'ni bizda 2 ta jadval mavjud, biz shu 2 ta jadvallardan o'zimizga kerakli bo'lgan ma'lumotlarni olishni ko'rib chiqamiz.
Yani biror kurslarga qatnashuvchilar haqidagi malumotlarni misol qilaylik.
2 ta jadval yaratamiz.
'user' jadvali
:
CREATE TABLE `user` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`course` smallint(5) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
)
'course' jadvali :
CREATE TABLE `course` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
)
Ushbu jadvallarni yaratganimizdan keyin ularga bir nechta malumotlarni qo'shamiz
'course' jadvaliga :
INSERT INTO `course` (`id`, `name`) VALUES (1, 'HTML kursi');
INSERT INTO `course` (`id`, `name`) VALUES (2, 'PHP kursi');
INSERT INTO `course` (`id`, `name`) VALUES (3, 'JavaScript kursi');
INSERT INTO `course` (`id`, `name`) VALUES (4, 'C++ kursi');
INSERT INTO `course` (`id`, `name`) VALUES (5, 'Java kursi');
'user' jadvaliga:
INSERT INTO `user` (`id`, `name`, `course`) VALUES (1, 'Sardor', 4);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (2, 'Eshmat', NULL);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (3, 'Toshmat', 1);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (4, 'Elyor', 4);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (5, 'Ogabek', 5);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (6, 'Shaxboz', 5);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (7, 'Ulugbek', 2);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (8, 'Botir', 4);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (9, 'Sarvar', 5);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (10, 'Muhiddin', 3);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (11, 'Jasur', NULL);
INSERT INTO `user` (`id`, `name`, `course`) VALUES (12, 'Samandar', 2);
INNER JOIN
Ushbu rasmdan ham anglab olish oson, yani 2 ta jadvalda bir biriga mos bo'lganlarnigina chiqarib beradi. Ya'ni rasmdagi bo'yalib turgan qismini chiqarib beradi.Oddiy qilib tushuntirishga harakat qilaman, userlardan faqat kursga boradiganini ko'rsatish uchun ,shu haqda malumotlarni chiqarib beradi.
SELECT user.name, course.name
FROM `user`
INNER JOIN `course` on user.course = course.id;
Natija:
"user.name" "course.name"
"Toshmat" "HTML kursi"
"Ulugbek" "PHP kursi"
"Samandar" "PHP kursi"
"Muhiddin" "JavaScript kursi"
"Sardor" "C++ kursi"
"Elyor" "C++ kursi"
"Botir" "C++ kursi"
"Ogabek" "Java kursi"
"Shaxboz" "Java kursi"
"Sarvar" "Java kursi"
'user' jadvalining 'course' ustunidagi qiymat 'course' jadvalining 'id' siga teng bo'ladigan
qiymatlarni chiqarib beradi
LEFT JOIN
Nomidan ham ko'rinib turibdi, chap tarafdagi jadval va unga boglangan ikkinchi jadvaldan o'ziga tegishlisini oladi faqat.
O'ng tarafdagi (user) jadvalga nisbatan qarayapmiz. Yani userlardan kim qaysi kursga boradi va bormaydi, shular haqda ma'lumot
olish uchun ishlatamiz.
SELECT user.name, course.name
FROM `user`
LEFT JOIN `course` on user.course = course.id;
Natija:
"user.name" "course.name"
"Toshmat" "HTML kursi"
"Ulugbek" "PHP kursi"
"Samandar" "PHP kursi"
"Muhiddin" "JavaScript kursi"
"Sardor" "C++ kursi"
"Elyor" "C++ kursi"
"Botir" "C++ kursi"
"Ogabek" "Java kursi"
"Shaxboz" "Java kursi"
"Sarvar" "Java kursi"
"Eshmat" NULL
"Jasur" NULL
user jadvalidagi barcha qiymatlarni oladi va course ustunidagi id larga to'gri keluvchi course.name ni ko'rsatib beradi
RIGHT JOIN
SELECT user.name, course.name
FROM `user`
RIGHT JOIN `course` on user.course = course.id;
o'ng tarafdagi jadval(course) ga mos bo'lga userlarni chiqarish uchun, ya'ni course jadvlaridagi kurslarga kimlar boradi va bormaydi, shular haqda
ma'lumot olish uchun ishlatiladi.
Natija :
"user.name" "course.name"
"Toshmat" "HTML kursi"
"Ulugbek" "PHP kursi"
"Samandar" "PHP kursi"
"Muhiddin" "JavaScript kursi"
"Sardor" "C++ kursi"
"Elyor" "C++ kursi"
"Botir" "C++ kursi"
"Ogabek" "Java kursi"
"Shaxboz" "Java kursi"
"Sarvar" "Java kursi"
NULL "C# kursi"
OUTER JOIN
Ikkita jadvaldagi barcha malumotlarni birlashtirib beradi.
SELECT user.name, course.name
FROM `user`
LEFT JOIN `course` on user.course = course.id
UNION
SELECT user.name, course.name
FROM `user`
RIGHT JOIN `course` on user.course = course.id;
Natija :
"user.name" "course.name"
"Toshmat" "HTML kursi"
"Ulugbek" "PHP kursi"
"Samandar" "PHP kursi"
"Muhiddin" "JavaScript kursi"
"Sardor" "C++ kursi"
"Elyor" "C++ kursi"
"Botir" "C++ kursi"
"Ogabek" "Java kursi"
"Shaxboz" "Java kursi"
"Sarvar" "Java kursi"
"Eshmat" NULL
"Jasur" NULL
NULL "C# kursi"
Qo'ldan kelgancha tushuntirishga harakat qildim.
No comments:
Post a Comment