10-мавзу. Union, Intersect ва Minus стандарт сўзидан фойдаланиш.
Амалий масаланинг номи: MySQL да товарларни
махсулотлар омборида
рўйхатдан ўтқазиш.
Масаланинг қўйилиши: Union, Intersect ва Minus стандарт сўзидан
фойдаланиб товар маълумотларига ишлов бериш.
Масаланинг ечилиши: Тасаввур қилайлик, 2та товар номлари келтирилган
жадвал шакллантирилган.
1-Расм.(Tovar1 жадвали)
2-Расм.( Tovar2 жадвали)
Захира омборида 1-Расмда келтирилган товарлар бор, аммо, 2-Расмдаги
айрим товарлар йўқ. Шу сабабли фақат захира оморида йўқ товарларни олиб
қолиш учун UNION операторидан фойдаланамиз. Яъни, бу
оператор
жадвалдаги маълумотларни бир-бирига қўшишга ўхшаб кетади. Бу жараённи
PhpMyAdmin да синаб кўрамиз ва унга жавоб оламиз.
Юқоридаги масалага UNION оператори орқали сўров ёзамиз(3-расм) ва
сўровни тасдиқлаб куйидаги натижани оламиз(4-Расм)
3-Расм(Масала шартига кўра сўров)
4-Расм(Натижа)
Энди эса INTERSECT операторини қачон қўллаш ҳақида гаплашамиз. Бу сўз
инглизчадан олинган бўлиб
intersection ўзбекчада кесишма деган маънони
билдиради. Хўш, уни қачон қўллаш мумкин? Бу
оператор асосан
жадвалларни тўпламлар тариқасида қарасак, улар қайси бир элементлар
билан ўхшашликга эга эканлиги ҳакида ҳабар беради. Келинг уни соддароқ
тушуниш учун юқоридаги жадваллардан фойдаланган ҳолатда унга ойдинлик
киритамиз. 1-Расм даги жадвалимиз 3та
кортежга эга, 2-Расм даги
жадвалимиз эса 5та кортежга эга. Хўш нима деб ўйлайсиз, бизда ўхшаш
кортежлар борми? Ҳа,бор. Бу ID=3 ва Nomi=Non бўлган кортеждир. Унинг
MySQL даги ечимига келадиган бўлсак, у қуйидагича бўлади:
5-Расм(MySQL даги сўров)
6-Расм(Натижа)
MINUS операторини номланишини ўқиган одам қандай вазифа бажаришини
англаган бўлиши мумкин. Тўғри, бу оператор тўпламлар
орасида айириш
вазифасини бажаради. Яъни, қайси бир тўплам 1-ўринда келган бўлса у
асосий тўплам деб қаралиб, 2-ўринда келгани ташувчи бўлиб хизмат қилади.
Келинг, юқорида берилган жадваллар орасида ушбу амални бажариб натижа
олайлик(Tovar1 – Tovar2). Tovar1 тўплам деб тасаввур қилиб унинг ичидаги
кортежларини шу тўпламнинг элементлари деб фараз қилайлик. Ҳудди шу
фаразни Tovar2 жадвали учун ҳам ўринли деб қараб қуйидагиларни ҳосил
қиламиз:
Tovar1((1,Yog’), (2,Un), (3,Non)); Tovar2((1,Go’sht), (2,Suv), (3, Non),
(4,Tuz), (5,Shakar)). Юқоридаги тузиб олинган тўпламларни бир-биридан
айирамиз ва Tovar3 бўлган янги тўпламни ҳосил қиламиз:
Tovar1-Tovar2= Tovar3;
Tovar3=Tovar1((1,Yog’), (2,Un), (3,Non)) - Tovar2((1,Go’sht), (2,Suv), (3, Non),
(4,Tuz), (5,Shakar))= ((1,Yog’), (2,Un));
Ечим тариқасида
Tovar3=((1,Yog’), (2,Un)) га тенг бўлди. Сизда савол пайдо
бўлганлиги тайин. Яъни, нега Tovar1 тўпламининг атига 1та
элементи
ўчирилдию Tovar2 тўпламининг барча элементлари ўчириб юборилди деган.
Тўғри, лекин унинг жавобини биз юқорида келтириб ўтган назариялардан
қидириб топасиз. Энди эса унинг MySQL даги сўров асосида қурилган
ечимига эътибор қаратамиз:
7-Расм(MySQL даги сўров)
8-Расм(Натижа)
Айрим масалаларни MySQL ни қўллаб қувватлайдиган муҳитларда
қўлласангиз хатолик бериши мумкин. Аммо, унинг мантиқий маъноси худди
шу кўринишга ва ечимига эга бўлиши аниқ.
Топшириқларни бажаринг ва балларни қўлга киритинг.
Топшириқларни алоҳида “Топшириқ саволлари” жилдидан олишингиз мумкин