13-14-Mavzu. Bir nechta jadvallar birlashtirish, “JOIN” lar bilan ishlash. Murakkab so‘rovlar yaratish
Endi biz ma’lumotlar bazasidagi mavjud jadvallarni birlashtirib kerakli ma’lumotlarni olishni ko‘rib o‘tamiz. Bunda SQL ning maxsus JOIN(inner, left, right) operatorlaridan foydalanamiz. Biz misol sifatida quyidagi ko‘rinishda loyihalangan ma’lumotlar bazasini ko‘rib o‘tamiz:
INNER JOIN оператори: INNER JOIN оператори 2 та жадвални бирлаштиради. Буни қуйидаги чизмада аниқ кўриш мумкин:
INNER JOIN операторининг синтаксиси қуйидагича:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
Юқорида берилган Savdo номли базадаги tovar_in ва tovar номли жадвалларни бирлаштириб (Tovar_id орқали) 35000 дан қимматга сотиб
олинган товарларнинг Tovar_name, Itovar_son, Itovar_baxo, Itovar_data устунларини чиқарайлик. Бу SQL тилида қуйидагича бўлади:
Select Tovar_name, Itovar_son, Itovar_baxo, Itovar_data FROM Tovar_in Inner JOIN tovar
ON Tovar_in.tovar_Id=Tovar.tovar_Id where
itovar_baxo>35000
Натижа қуйидагича:
Натижага эътибор берсак, Tovar_name устуни Tovar жадвалидан, қолган устунлари эса Tovar_in жадвалидан олинмоқда. Буни эса INNER JOIN операторидан фойдаланган ҳолда амалга оширдик.
LEFT JOIN оператори: Энди жадвалларни бирлаштиришнинг LEFT JOIN операторини кўриб чиқайлик. LEFT JOIN оператори орқали 2 та жадвални бирлаштирганимизда чап томондаги жадвалдаги маълумотларнинг барчаси ўнг томондаги жадвалдан эса фақат чап томондаги билан мос бўлган маълумотлар олинади
Буни мисолда кўриб чиқайлик. Масалан, юқорида келтирилган маълумотлар базасидан бизга Tovar жадвалидаги мавжуд товарларнинг қайсилари ва нечтадан сотилганлиги ҳақидаги маълумот чиқарилсин. Буни SQL да қуйидагича ёзамиз:
SELECT Tovar_name, SUM(itovar_son) as soni FROM Tovar Left join Tovar_in On tovar.tovar_id=Tovar_in.tovar_id Group by TOVAR_NAME Order BY soni
Натижага эътибор берадиган бўлсак, дастлабки турган 7 та Tovar номининг soni устунида NULL қиймат турибди. Бu эса шу товарлар магазинга келмаганлигини яъни умуман сотиб олинмаганлигини
англатади. NULL қийматни чиқаришига сабаб олиб келинган товарлар ичида бу товарлар мавжуд эмас.
RIGHT JOIN: RIGHT JOIN операторининг ишлаш принципи LEFT JOIN операторига ўхшаш ҳисобланади. Уларнинг бир-биридан фарқи LEFT JOIN дa асосий жадвал чап жадвал ҳисобланса, RIGHT JOIN дa ўнг жадвал асосий жадвал ҳисобланади. Юқоридаги масалани SQL дa RIGHT JOIN орқали бажариб кўрамиз:
SELECT Tovar_name, SUM(itovar_son) as soni FROM Tovar Left join Tovar_in On tovar.tovar_id=Tovar_in.tovar_id Group by TOVAR_NAME Order BY soni
Натижа эса юқоридаги билан бир хил.
Сўровларни бирлаштириш. UNION оператори: UNION оператори иккита сўровни бирлаштириш учун қўлланилади. Бу оператор синтаксиси қуйидагича:
SELECT устунлар номи FROM 1-жадвал
UNION
SELECT устунлар номи FROM 2-жадвал;
Шуни унутмаслик керакки, Union операторини учун 2 ta запрос дa ҳам устунлар номи ва сони бир хил бўлиши керак. Энди Savdo номли маълумотлар базамизда бунга мисол кўрайлик. Масалан, 1-сотувчи (Sotuvchi_Id=1) va 2-сотувчи сотган махсулотлар номини чиқарайлик. Аввал 1-сотувчи сотган махсулот номларини чиқарайлик:
Do'stlaringiz bilan baham: |