Variant №3 sql tilida agregat (yig`uvchi) funksiyalarni ishlatish. Natijalarni guruhlash. Sqlda ma’lumotlarni va guruhlarni tanlash. Javob


Download 33.12 Kb.
Sana08.05.2020
Hajmi33.12 Kb.
#104304
Bog'liq
Abdurazzoqov Ilhom Oraliq nazorati


Download 33.12 Kb.

Do'stlaringiz bilan baham:

Variant № 3

  1. SQL tilida agregat (yig`uvchi) funksiyalarni ishlatish.

  2. Natijalarni guruhlash.

  3. Sqlda ma’lumotlarni va guruhlarni tanlash.

Javob.

1-savol. SQL turli xil toifadagi ko'plab o'rnatilgan funktsiyalarni belgilaydi, ular orasida bir nechta satrlar ustunlari qiymatlarida ishlaydigan va bitta qiymatni qaytaradigan agregat funktsiyalari alohida o'rin egallaydi. Jadval ustunlari va ularning ustidagi ifodalarning natijalari umumlashtiruvchi funktsiyalarning argumentlari bo'lishi mumkin. Umumlashtiruvchi funktsiyalar boshqa arifmetik ifodalarga kiritilishi mumkin. Quyidagi jadvalda eng ko'p ishlatiladigan standart birlashgan agregat funktsiyalari ko'rsatilgan.


Yagona agregat funktsiyasining umumiy formati quyidagicha:

function_name ([ALL | DISTINCT] ifoda)

bu erda DISTINCT funktsiya faqat argumentning har xil qiymatlarini hisobga olish kerakligini va BARChA - barcha qiymatlarni, shu jumladan takroriy qiymatlarni (bu parametr sukut bo'yicha ishlatiladi) hisobga olish kerakligini bildiradi. Masalan, 1, 1, 1 va 3 qiymatlari bo'lgan ustun satrlari uchun DISTINCT kalit so'zli AVG funktsiyasi 2 ni, agar ALL kalit so'z bo'lsa, u 1.5 ni qaytaradi.

Umumlashtirish vazifalari SELECT va HAVING iboralarida qo'llaniladi. Bu erda biz ularni SELECT gapida qanday ishlatilishini ko'rib chiqamiz. Bunday holda, funktsiya argumentidagi ifoda SELECT iborasining kirish jadvalining barcha qatorlariga qo'llaniladi. Bundan tashqari, keyingi bo'limlarda muhokama qilinadigan GROUP BY iborasi bo'lmaganda, tanlangan vazifalarda va jadval ustunlarida (yoki ular bilan ifodalangan) SELECT so'zlaridan foydalanib bo'lmaydi.

COUNT funktsiyasi ikkita formatga ega. Birinchi holda, kirish jadvalidagi satrlar soni qaytariladi, ikkinchi holda, kirish jadvalidagi argument qiymatlari soni:



  • COUNT (*)

  • COUNT (ifoda)

Ushbu funktsiyadan foydalanishning eng oddiy usuli - jadvaldagi qatorlar sonini hisoblash (barchasi yoki belgilangan shartni qondiradiganlar). Buning uchun birinchi sintaksis variant ishlatiladi.

Talab: Ma'lumotlar bazasida mavjud bo'lgan mahsulotlar turlari soni.

TANLASH (*) AS "Mahsulotlar soni"

FROM Mahsuloti

COUNT funktsiyasining ikkinchi sintaksisida bitta ustun nomini argument sifatida ishlatish mumkin. Bunday holda, kirish jadvalining ushbu ustunidagi yoki faqat takrorlanmaydigan qiymatlarning soni hisoblanadi (DISTINCT kalit so'zidan foydalanib).

So'rov: Xaridor jadvalidagi turli xil nomlarning soni.

TANLASH (DISTINCT FNAME)

Qolgan birlashgan agregat funktsiyalaridan foydalanish COUNT ga o'xshashdir, bundan tashqari MIN va MAX funktsiyalari uchun DISTINCT va ALL kalit so'zlaridan foydalanish mantiqiy emas. COUNT, MAX va MIN funktsiyalarida belgilarga qo'shimcha ravishda sonlardan tashqari foydalanish mumkin. Agar agregat funktsiyaning argumentida qiymatlar bo'lmasa, COUNT funktsiyasi 0 ni, qolganlari esa NULLni qaytaradi.

SELECT MAX (OrdDate)

FROM


SQL tilida quyidagi ma'lumotlarni tanlash uchun so'rovlarni shakllantirish:

  • Barcha buyurtmalarning umumiy qiymati;

  • Xaridor jadvalida keltirilgan turli xil shaharlar soni.

Ma'lumotlar bazasida mavjud bo'lgan ma'lumotlarni umumlashtirish uchun SQL-da agregat vazifalari keltirilgan. Umumlashtiruvchi funktsiya ma'lumotlarning butun ustunini argument sifatida oladi va ma'lum bir tarzda bu ustunni umumlashtiradigan bitta qiymatni qaytaradi.

Masalan, AVG () agregat funktsiyasi argument sifatida raqamlar ustunini oladi va ularning o'rtacha qiymatini hisoblaydi.

Zelenogradda yashovchining jon boshiga o'rtacha daromadini hisoblash uchun sizga quyidagi so'rov kerak bo'ladi.

SQL-da har xil turdagi ma'lumotlarga ega bo'lish imkonini beradigan oltita agregat funktsiyalari mavjud (1-rasm):

- SUM () ustundagi barcha qiymatlarning yig'indisini hisoblaydi;

- AVG () ustundagi qiymatlarning o'rtacha qiymatini hisoblaydi;

- MIN () ustundagi barcha qiymatlarning eng kichigini topadi;

- MAX () ustundagi barcha qiymatlarning eng kattasini topadi;

- COUNT () ustundagi qiymatlar sonini hisoblaydi;

- COUNT (*) so'rov natijalari jadvalidagi qatorlar sonini hisoblaydi.

Umumiy funktsiyaning argumenti avvalgi misoldagi kabi oddiy ustun nomi yoki jon boshiga soliqni hisoblashni belgilaydigan quyidagi so'rovda ko'rsatilgan ibora bo'lishi mumkin:

AVGNI TANLASH (SUMD * 0.13)

Ushbu so'rov bajarilganda PERSON jadvalining har bir qatori uchun (SUMD * 0.13) qiymatlarni o'z ichiga olgan vaqtinchalik ustun yaratiladi va keyin vaqtincha ustunning o'rtacha qiymati hisoblanadi.

Zelenogradning barcha aholisining umumiy daromadini SUM agregat funktsiyasi yordamida hisoblash mumkin:

SHAXSIDAN YANGI (YoQING) TANLASH

Umumlashtirish funktsiyasidan bir nechta manba jadvallariga qo'shilish natijasida olingan natijalar jadvaliga muvofiq hisoblash uchun foydalanish mumkin. Masalan, "stipendiya" deb nomlangan manbadan rezidentlar olgan daromadlarning umumiy miqdorini hisoblashingiz mumkin:

Qaytarilgan ustunlar qatorida har qanday ustun nomining o'rniga siz agregat funktsiyasini belgilashingiz mumkin. Masalan, u ikkita umumlashtiruvchi funktsiyalarning qiymatlari qo'shilgan yoki olib tashlanadigan ifodaga kiritilishi mumkin:

SELECT MAX (SUMD) -MIN (SUMD) SHAXSNINGDAN

Ammo, agregat funktsiyasi boshqa agregat funktsiyasi uchun argument bo'la olmaydi, ya'ni. o'rnatilgan agregat funktsiyalari taqiqlanadi.

Bundan tashqari, yig'ilgan funktsiyalar va oddiy ustun nomlari bir vaqtning o'zida qaytarilgan ustunlar ro'yxatida ishlatilishi mumkin emas, chunki bu mantiqiy emas, masalan:

FOYDALANIShNI TANLASH, SHAXSNING SUM (SUMD)

Bu erda ro'yxatning birinchi elementi ma'lumotlar bazasi ma'lumotlar bazasida bir nechta satrlardan iborat va har bir rezident uchun bitta qatordan iborat jadval yaratilishini bildiradi. Ro'yxatning ikkinchi elementi SUMD ustunining qiymatlari yig'indisi bo'lgan bitta natija qiymatini olish uchun DBMS-dan so'raydi. Ushbu ikkita ko'rsatma bir-biriga zid keladi, bu xatoga olib keladi.

Yuqorida aytilganlar, quyi so'rovlar va guruhlarga ega bo'lgan so'rovlarni qayta ishlash holatlariga nisbatan qo'llanilmaydi.

  intizom ustunining qiymati bo'yicha. Biz ba'zi guruh qiymatlarini hisoblashimiz mumkin bo'lgan 4 ta guruhni olamiz, masalan, guruhdagi to'rlar soni, "Bal" ustunining maksimal yoki minimal qiymati.    5.7-jadval. Umumiy vazifalar


Funktsiya

Natija

COUNT

So‘rov tanlangan qatorlar yoki bo‘sh bo‘lmagan qiymatlar soni

SUM

Ushbu maydonning tanlangan barcha qiymatlarining yig'indisi

O‘rtacha

Ushbu maydonning barcha tanlangan qiymatlarining arifmetik o'rtacha qiymati

MIN

Ushbu maydon uchun tanlangan qiymatlarning eng kichigi

MAX

Ushbu maydon uchun tanlangan qiymatlarning eng kattasi

2-savol.

SQL da natijalarni guruhlashning yangicha ko`rinishi Agregat funksiyalar jadval uchun natijaviy satr xosil qiladi.  Masalan: Sotuvchi buyurtmasining o‘rtacha narxi qancha?


SELECT AVG(AMOUNT)
FROM ORDERS
Masalan, oraliq natijani topish lozim bo‘lsin. Bu holda guruxlanishli so‘rov yordam beradi. YA’ni SELECT operatorining GROUP BY ifodasi. Avval GROUP BY ifodasi qatnashgan quyidagi so‘rovni ko‘ramiz: Xaar bir xizmatchi uchsun buyurtma o‘rtacha narxi qancha?
SELECT REP, AVG(AMOUNT)
FROM ORDERS
GROUP BY REP
REP maydoni bu xolda guruxlash maydonidir, ya’ni REP maydonning xamma qiymatlari guruxlarga ajratiladi va xar bir gurux uchun AVG(AMOUNT) ifodasi xisoblanadi! ya’ni quyidagilar bajariladi:

So‘rovlar xar bir xizmatchaga bittadan guruxga ajratiladi.Xar bir guruxda REP maydoni bir xil qiymatga ega.

Xar bir gurux uchun guruxga kiruvchi xamma satrlar bo‘yicha AMOUNT ustuni o‘rta qiymati xisoblanadi va bita natijaviy satr xosil qilinadi. Bu qator  gurux uchun REP ustuni qiymati vash u gurux uchun so‘rov o‘rta qiymatini o‘z ichiga oladi.

SHunday qilib, GROUP BY ifodasi qo‘llanilgan so‘rov, "GURUXLANISHLI SO‘ROV " deb ataladi! SHu ifodadan keyin kelgan ustun "guruxlash ustuni " deyiladi. YAna bir necha guruxlanishli so‘rovlarni ko‘rib chiqamiz.


Xar bir ofis uchun sotuvlarning rejalashtirilgan xajmi diapazoni qancha?
SELECT REP_OFFICE, MIN(QUOTA), MAX(QUOTA)
FROM SALESREPS
GROUP BY REP_OFFICE
YAna bir so‘rov: Xar bir ofisda qancha xizmatchi ishlaydi?
SELECT REP_OFFICE, COUNT(*)
FROM SALESREPS
GROUP BY REP_OFFICE
YAna bir guruxlanishli qiziqarli so‘rov: Xar bir xizmatchi nechta mijozga xizmat ko‘rsatadi?
SELECT COUNT(DISTINCT CUST_NUM), 'CUSTOMERS FOR SALESREPS', CUST_REP
FROM CUSTOMERS
GROUP BY CUST_REP
Bu erda 'CUSTOMERS FOR SALESREPS' psevdomaydonning ishlatilishiga e’tibortbering. So‘rov natijalarini bir nechta ustun bo‘yicha guruxlash mumkin. Masalan, quyidagicha:
Xar bir xizmatchi uchun xar bir klient bo‘yicha buyurtmalar umumiy sonini xisoblash.
SELECT REP, CUST, SUM(AMOUNT)
FROM ORDERS
GROUP BY REP, CUST
Lekin ikki ustun bo‘yicha guruxlashda natijalar ikki darajasiga ega guruxlar va ostki guruxlar yaratish mumkin emas. Lekin tartiblashni qo‘llash mumkin. SHu bilan birga GROUP BY ishlatilganda so‘rov natijalari avtomatik tartiblanadi. Quyidagi so‘rovni ko‘ramiz:
Xar bir xizmatchi uchun xar bir klient bo‘yicha buyurtmalar umumiy sonini xisoblash; so‘rov natijalarini klientlar va xizmatchilar bo‘yicha tartiblash.
SELECT REP, CUST, SUM(AMOUNT)
FROM ORDERS
GROUP BY REP, CUST
ORDER BY REP, CUST
SHunday qilib GROUP BY ifodasi SELECT ni guruxlarni qayta ishlashga majbur qiladi.
MS SQL serverida COMPUTE  ifodasi mavjud bo‘lib relyasion so‘rovlar asoslariga zid keladi. Lekin uning yordamida saqlanuvchi protseduralardan foydalanmasdan shunga o‘xshash natijalarni olish mumkin. Ruruxlanishli so‘rovlar uchun chegaralar mavjud. Satrlarni xisoblanuvchi ifoda asosida guruxlash mumkin emas. Qaytarilao‘tgan qiymatlar elementlariga xam chegaralar mavjud. Qaytariluvchi ustun bo‘lishi mumkin:

1. Konstantalar.

2. Guruxga kirgan xamma satrlar uchun bitta qiymat qaytaruvchi agregat funksiya.

3. Gurux xamma satrlarida bir xil qiymatga ega guruxlash ustuni.

4. Ko‘rsatilgan elementlarni o‘z ichiga oluvchi ifoda.

          Odatda guruxlanishli so‘rovlar qaytaruvchi ustunlarga guruxlash ustuni va agregat funksiya kiradi. Agar agregat ko‘rsatilmasa  GROUP BY dan foydalanmasdan  DISTINCT ifodasidan foydalanish etarli. Agar so‘rovga guruxlash ustuni qo‘shilmasa, u yoki bu satr qaysi guruxga tegishliligini aniqlash mumkin emas. SHu kabi SQL92 guruxlanishli so‘rovlarni taxlil qilishda birlamchi va ikkilamchi kalitlar xaqidagi ma’lumot ishlatilmaydi.


Xar bir xizmatchi uchun buyurtmalar umumiy sonini xisoblash.
SELECT EMPL_NUM, NAME, SUM(AMOUNT)
FROM ORDERS, SALESREPS
WHERE REP = EMPL_NUM
GROUP BY EMPL_NUM, NAME
YAna soddaroq shakl:
Xar bir xizmatchi uchun buyurtmalar umumiy sonini xisoblash.
SELECT NAME, SUM(AMOUNT)
FROM ORDERS, SALESREPS
WHERE REP = EMPL_NUM
GROUP BY NAME
Agar guruxlash maydonlaridan birida  NULL qiymat mavjud bo‘lsa qaysi guruxga tegishli bo‘ladi?  WHERE ifodasida NULL va NULL tenglikka solishtirish natijasi yana NULL beradi. SHuning uchun ANSI/ISO standartida GROUP BY ifodasida NULL qiymatlar teng deb qabul qilingan.

Guruxlash va HAVING yordamida ajratish
SHart bo‘yicha satrlarni ajratish uchun WHERE ifodasidan foydalangan edik. SHart bo‘yicha guruxlarni ajratish uchun HAVING operatori mavjuddir. Uning sintaksisi WHERE operatori bilan bir xil va ulardan birgalikda foydalanigsh mumkin. Quyidagi so‘rovni ko‘ramiz:
Buyurtmalar umumiy narxi $300 dan ortiq xizmatchilar uchun buyurtma o‘rtacha narxi qanchaga teng?
SELECT REP, AVG(AMOUNT)
FROM ORDERS
GROUP BY REP
HAVING SUM(AMOUNT) > 300
Ko‘rinib turibdiki HAVING SUM(AMOUNT) > 300 ifodasi satrlarni guruxlash sharti sifatida kelmoqda.
Agar SUM(AMOUNT) > 300 sharti yolg‘on bo‘lsa, bu gurux natijaviy to‘plamdan chiqariladi. Agar rost bo‘lsa gurux natijaviy to‘plamga kiradi!
YAna bir misol ko‘raylik: Ikki va undan ortiq xizmatchiga ega xar bir ofisning xamma xizmatchilari uchun rejadagi va xaqiqiy sotuvlar umumiy xajmini xisoblash.
SELECT CITY, SUM(QUOTA), SUM(SALESREPS.SALES)
FROM OFFICES, SALESREPS
WHERE OFFICE = REP_OFFICE
GROUP BY CITY
HAVING COUNT(*) >= 2
Bu misolda WHERE va HAVING ifodalari o‘z funksiyalarini bajaradilar. Na shunga e’tibor berish kerakki HAVING ifodasida agregat funksiyalardan foydalaniladi, So‘rov bajarilishini ko‘ramiz:

OFFICES va SALESREPS jadvallari xizmatchi yashaydigan gshaxarni topish uchun qo‘shiladilar.

Qo‘shilgan jadval satrlarlari ofislar bo‘yicha guruxlanadilar.

Ikkidan kam satrga ega guruxlar tashlab yuboriladi. Ular HAVING ifodasi talabiga javob bermaydilar.

Xar bir gurux uchun xaqiqiy va rejadagi sotuvlar xajmlari xisoblanadi.

Murakkabroq misolni ko‘ramiz:


Xar bir tovar nomi uchun narxi, ombordagi soni va buyurtma berilganlar umumiy sonini ko‘rsating, agar uning uchun buyurtma berilganlar umumiy soni ombordagi umumiy soni 75 foizidan ko‘p bo‘lsa.
SELECT DESCRIPTION, PRICE, QTY_ON_HAND, SUM(QTY)
FROM PRODUCTS, ORDERS
WHERE MFR = MFR_ID
GROUP BY MFR_ID, PRODUCT_ID, DESCRIPTION, PRICE, QTY_ON_HAND
HAVING SUM(QTY) > (0.75 * QTY_ON_HAND)
ORDER BY QTY_ON_HAND DESC
HAVING uchung qo‘shimcha chegaralar mavjuddir. Bu ifoda juda bo‘lmasa bita agregat funksiyani o‘z ichiga olishi kerak. Chunki WHERE aloxida satrlarga HAVING satrlar guruxlariga qo‘llanadi. NULL qiymat uchun WHERE ifodasiga o‘xshab quyidagi qoida o‘rinli Agar izlash sharti NULL qiymatga ega bo‘lsa satrlar guruxi tashlab yuboriladi. HAVING ifodasini  GROUP BY siz qo‘llash mumkin. Bu xolda natija xamma satrlardan iborat gurux deb qaraladi, lekin amalda bu kam qo‘llanadi.

3-savol.

MySQL ma’lumotlar bazasida ma’lumotlarni tanlash va formatlash.

Dastur listingi:


@mysql_connect("localhost", "web", "ffttss")

or die("Could not connect to MySQL server!");

@mysql_select_db("company")

or die("Could not select products database!");

// products jadvalidan barcha yozuvlarni tanlash (ajratib

olish)


$query = "SELECT * fROM products"; $result = mysql_

query($query);

$x = 0;

print "

\n";



print "\n\n\n";

WHILE ($x < mysql_numrows($result)) :

$id = mysql_result($result. $x. 'prod_id');

164

$name = mysql_result($result, $x, 'prod_name');



$price = mysql_result($result. $x, 'prod_price');

print "

\n";

print "

\n\n\n";

$x++;


endwhile;

print "

Product IDProduct Name

th>

Product Price
$id$name$price

td>\n";


print "
";

mysql_close();

?>

Bu misolni bajarish natijasida quyidagi natijaga ega bo‘lamiz:



















































Product IDProduct NameProduct

Price

1000pr apples 1.23
1001pr oranges 2.34
1002pr bananas 3.45
1003pr pears 4.45

mysql_result funksiyasi uncha katta bo‘lmagan ma’lumotlar to‘plami bilan ishlashda qulay, lеkin ancha samarali ishlaydigan boshqa funksiyalar ham mavjud, masalan, mysql_fetch_row( ) va mysql_fetch_array ( ) funksiyalari.

Ko‘pgina hollarda alohida maydonlarni olish uchun mysql_result() funksiyasini ko‘p marta takroran qo‘llashdan ko‘ra, indеkslanuvchi massiv (indеksi 0 dan boshlanadigan) elеmеntlariga yozuvning barcha maydonlari qiymatini tayinlash qulay. Bu masala mysql_fetch_row( ) funksiyasi bilan yеchiladi. Uning sintaksisi quyidagicha :

array mysql_fetch_row (int natija)

List() funksiyasini mysql_fetch_row( ) bilan birgalikda ishlatish bir qancha buyruqlarni tеjash imkonini bеradi.

Misol: Ma’lumotlarni mysql_fetch_row () funksiyasi bilan

tanlash (ajratish).

// Ma’lumotlarni mysql_fetch_row( ) funksiyasi bilan ajratish



@mysql_connect( "localhost", "web", "ffttss") or die("Could

not connect to MySQL server!");

@mysql_select_db("company") or die("Could not select products database!");

$query = "SELECT * fROM products";

$result = mysql_query($query);

print "

\n";

print "

\n\n\n";

while ($row = mysql_fetch_array($result)) :

print "

\n":

print "

\n\n\n";

print "

\n";

endwhile;

print "

Product IDProduct Name

Product Price

".$row["prod_id"]."".$row["prod_name"]."



" .$row["prod_price"]. "
";

mysql_close();

?>

Kеltirilgan ma’lumotlar ilovalar yozishga yеtarli. Kеltirilgan ma’lumotlar asosida oddiy qidiruv tizimining ilovasini yaratamiz.



Namoyish misoli HTML formasini ma’lumotlarni olishga qo‘llashni namoyish qiladi, kеyinchalik ular bazadan ma’lumotlar tanlab olish uchun ishlatiladi.

Sodda qidiruv tizimi yaratish. Web tizimida ko‘p hollarda qidirish tizimlari bilan ishlashga to‘g‘ri kеladi. Sodda qidirish tizimida hеch bo‘lmaganda bitta kalit so‘z ishlatiladi. Bu so‘z SQL so‘rov tarkibiga kiritiladi, so‘ngra u ma’lumotlar bazasidan axborot tanlashda ishlatiladi. Qidirish natijasi qidirish tizimi yordamida u yoki bu mеzon asosida formatlanadi (masalan, katеgoriyalar yoki moslik darajasiga qarab). Quyida kеltirilgan qidirish tizimi listingida mijozlar haqidagi axborot qidiriladi. Formada foydalanuvchi qidirish amalga oshiriladigan kalit so‘z kiritadi va katеgoriyasini tanlaydi (nomi, idеntifikatori yoki mijozning elеktron pochta adrеsi). Agar foydalanuvchi kiritgan nom, idеntifikator yoki adrеsi (manzil) mavjud bo‘lsa, qidirish tizimi bazadan qolgan atributlarni tanlab oladi. So‘ngra xaridor idеntifikatori bo‘yicha order jadvalidan buyurtmalar tanlab olinadi. Mijoz tomonidan rasmiylashtirilgan buyurtmalarning barchasi ular hajmining kamayib borish tartibida rasmiylashtiriladi (akslantiriladi). Agar katеgoriyada (toifada) foydalanuvchi tomonidan bеrilgan kalit so‘z uchramasa qidirish to‘xtatiladi, dastur kеrakli xabarni chiqaradi va yana forma aksl antiriladi.

Sodda qidirish tizimi (searchengine.php).

Sodda qidirish tizimi (searchengine.php) listing



$form =


"


Keyword:



ma x len g th=\" 20\" value= \" \">


Search focus:







,

// Agar forma akslantirilmagan bo‘lsa uni akslantiring:

if (Sseenform != "y") :

print $form; else :

// MySQL sеrvеriga ulanish va ma’lumotlar bazasini tanlash

@mysql_connect("localhost", "web", "ffttss")

or die("Could not connect to MySQL server!");

@mysql_select_db("company")

or die("Could not select company database!");

// so‘rov quring va bajaring:

$query = "SELECT cust_id. cust_name, cust_email

fROM customers WHERE $category = '$keyword'";

$result = mysql_query($query);

// Agar moslari topilmasa xabar chiqaring:

// va yana formani akslantiring:

if (mysql_num_rows($result) == 0) :

print "Sorry, but no matches were found. Please try your

search again:";

print $form;

// Mosliklar topildi. Natijani formatlang va chiqaring else :

// formatlang va maydon qiymatlarini chiqaring:

list($id, $name, $email) = mysql_fetch_row($result);

print "

Customer Information:

";

print "Name: $name


";

print "Identification #: $id


";

print "Email: $email


";

print "

Order History:

";



// ‘orders’ jadvaliga so‘rov quring va bajaring:

$query = "SELECT order_id, prod_id, quantity

FROM orders WHERE cust_id = '$id'

ORDER BY quantity DESC;

$result = mysql_query($query):

print "

";

print "

";

// topilgan yozuvlarni formatlang va chiqaring.

while (list($order_id, $prod_id, $quantity) = mysql_fetch_

row($result));

print "

";

print "

";

print "

";

endwhile;

print "

0rder IDProduct ID

th>

Quantity
$order_id$prod_id

td>

$quantity
";

endif;


endif;

?>

Agar Mi1ano kalit so‘zini kiritsak va yoyiluvchi ro‘yxatdan Customer Name (Mijoz nomi) toifasini tanlasak, dastur quyidagicha axborot chiqaradi:



Customer information:

Name:Milano

Identification#:2000cu

Email:felix@milano.com

Order History:

Order Id Product Id Quantity

100003 1000pr 12

100005 1002pr 11

Bu yеrda sodda qidiruv tizimi ko‘rib chiqildi. Hozirgi kunda bir nеchta kalit so‘zlar bo‘yicha qidirish, to‘liq bo‘lmagan kalit so‘zlar bo‘yicha qidirish yoki o‘xshash kalit so‘zli yozuvlarni avtomatik qidirish kabi qo‘shimcha imkoniyatli qidirish tizimlari mavjud.

Jadvallarda tartiblash. Ma’lumotlar bazasidan ma’lumotlar chiqarilayotganda, ularni har xil mеzon bo‘yicha tartiblash imkoniyatlari bo‘lishini hisobga olish kеrak.

Misol sifatida biz qidirish tizimi tomonidan chiqarilgan Order History nomli natija jadvaliga murojaat qilamiz. faraz qilaylik, jadvaldagi ma’lumotlar ro‘yxati yеtarli daraja uzun bo‘lib, biz undagi ma’lumotlarni tovar idеntifikatori (yoki buyurtma idеntifikatori)

bo‘yicha tartiblash talab etilsin. Tartiblashni shunday bajarish talab etiladiki, bunda listingdagi dastur kodiga o‘zgarish kiritmay, avtomatik ravishda ko‘rsatilgan ustunning ma’lumoti bo‘yicha tartiblash talab etiladi. Bunda dasturni ko‘rib chiqish jarayonida aniq toifa (katеgoriya) ustunining nomi (nomi, joylashish sanasi, yuklanishlar soni yoki fayl o‘lchami) ustida sichqoncha bosilsa, shu ustun ma’lumotlari bo‘yicha avtomatik tartiblanadi.

Bunday imkoniyat quyidagi listingda amalga oshirilgan. Quyidagi listingda ma’lumotlar Order jadvalidan tanlab olishni bajarayapmiz. Sukut bilan ma’lumotlar jadvalda buyurtma hajmining kamayib borish tartibida (quanity maydoni) tartiblanadi. Lеkin jadval maydon nomlarini ixtiyorida sichqoncha bosilsa, bu sahifa ko‘rsatilgan ustun bo‘yicha tartiblangan holda yuklanadi.

Listing. Jadvallarni tartiblash (tablesorter.php)



// MySQL sеrvеri ulanish va ma’lumotlar bazasini tanlash

@mysql_connect("localhost". "web", "ffttss")

or die("Could not connect to MySQL server!");

@mysql_select_db( "company")

or die("Could not select company database!");

// Agar $key o‘zgaruvchi qiymati bеrilmagan bo‘lsa, sukut bilan

// 'quantity' if (! isset($key)) qiymati ishlatiladi:

$key = "quantity"; endif;

// So‘rov yarating va bajaring.

// Tanlab olingan ma’lumotlar $key ustuni kamayib borishi

bo‘yicha tartiblanadi.

$query = "SELECT order_id, cust_id, prod_id, quanti-

ty fROM orders ORDER BY $key DESC" $result = mysql_query($query);

// Jadval sarlavhasini yarating:

print "

";

print "









";

// Jadvalning har bir satrini formatlang va chiqaring:

while (list($order_id,$cust_id,$prod_id, $quantity)

= mysql_fetch_row($result)) :

print "

";

print "

";

print "

";

endwhile;

// jadvalni yakunlang:

print "

Order ID Customer ID Product ID

a>

Quantity
$order_id$cust_id$prod_id

$quantity

";

Bu listingning standart chiqadigan ma’lumotlari quyidagi

ko‘rinishda bo‘ladi:

Order ID Customer ID Product ID Quantity

100003 2000cu 1000pr 12

100005 2000cu 1002pr 11

100004 2000cu 1000pr 9

100002 2000cu 1001pr 5

100001 2000cu 1002pr 3

E’tibor bеring: jadval sarlavhalari gipеrssilkalardan iborat.



Modomiki, sukut bilan tartiblanish quantity maydoni bo‘yicha amalga oshirilgani uchun yozuvlar oxirgi ustun qiymati kamayib borish bo‘yicha tartiblangan. Agar Order_ID gipеrssilkada sichqoncha bosilsa, sahifa yozuvlar buyurtma idеntifikatorini kamayib borish tartibida yangidan yuklanadi. Jadval quyidagi

ko‘rinishda bo‘ladi:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling