SQL-də bənd

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Yuxarıda seçilmiş sorğu bütün məlumatları cədvəldən çıxarır. Ancaq istifadəçi tələbi həmişə bütün cədvəl məlumatlarını almaq deyil. İstifadəçinin tələbindən asılı olaraq cədvəldən müəyyən qeydlər edə bilməliyik. Bu səbəbdən sorğudakı qeydlərin sayını məhdudlaşdırmaq üçün WHERE bənd sorğusundan istifadə edirik.

Fərz edək ki, kimliyi 'PRSN_45' olan nəşriyyat tərəfindən nəşr olunan kitabı tapmalıyıq. Sonra yuxarıdakı kimi SELECT sorğusundan istifadə edərək cədvəli soruşacağıq və WHERE müddəasını istifadə edərək PUBLISHER_ID-i süzgəcdən keçirmək üçün şərt əlavə edəcəyik.

PUBLISHER_ID = 'PRSN_45' olduğu KİTABLARDAN SEÇİN;

Yuxarıdakı sorğu bütün cədvəli soruşacaq və sonra 'PRSN_45' naşir id ilə qeydləri axtaracaq. Cədvəldə yalnız bir qeyd tapır və onu göstərir. Eynilə BRWR_ID = 'ALX_1002' tərəfindən götürülmüş kitabları tapan sorğunu nəzərdən keçirin.

BRWR_ID = 'ALX_1002'; BOOK_LOAN'DAN SEÇİN *;

2015-ci ildə kitabxanaya gələn kitabları əldə edin. Kitablarla bağlı bu məlumatları harada tapa bilərik? Bu məlumatlar kitabın hər nüsxəsinə xasdır və BOOK_COPY cədvəlində mövcuddur. Beləliklə, 2015-ci ildə hansı kitabların gəldiyini görmək üçün BOOK_COPY cədvəlini soruşmalıyıq. Buna görə bu detalları almaq üçün sorğu aşağıdakı kimidir:

SEÇİN * KİTABDAN_COPY'DƏN RECEIVED_DATE> = '1 Yanvar-2015';

 

Kitab götürmüş borcalanın təfərrüatlarını tapın və son tarix 2015-ci ilin iyun ayıdır. Bu məlumatlar BOOK_LOAN cədvəlində veriləcək və məlumatlarımız DUE_DATE sütununa filtr əlavə edilərək alınacaq.

DUE_DATE TARİXİNDƏ * BOOK_LOAN'DAN SEÇİN> = '1-Haz-2015';

 

Eynilə cədvəldən hər hansı bir xüsusi qeydləri görmək üçün hər hansı bir cədvələ müraciət edə bilərik. Burada WHERE maddəsi cədvəldən alınan qeydlərin sayını məhdudlaşdırır. Ancaq sorğu etdiyimiz bütün sütunları cədvəldən alır. İdeal olaraq istifadəçilər bəzi məlumatlar tələb etdikdə bütün sütun dəyərləri tələb olunmur. Cədvəldən yalnız müəyyən atributları görmək spesifik olacaq və qalan məlumatlar onlar üçün əhəmiyyətsiz olacaqdır.

Yuxarıdakı sorğuda, son tarixi iyun ayında olan kitabın borcalanını tapmaq üçün istifadəçi tərəfindən surət nömrəsi və borc tarixi kimi xüsusiyyətlər istənilmir. Onlara yalnız borcalan kimliyini və son tarixinin iyun ayında olduğu ISBN-i göstərməliyik. Beləliklə, nəticədə görmək istədiyimiz sütun adlarını göstərərək SEÇMƏ sorğusundakı sütunları məhdudlaşdırmalıyıq. İndi yuxarıdakı sorğu aşağıdakı kimi dəyişəcək:

SELECT BRWR_ID, ISBN 
	FROM BOOK_LOAN 
     WHERE DUE_DATE >= ‘1-Jun-2015’;

İndi nəticə yalnız tələb olunan atributları göstərir və nəticədə lazımsız məlumatların sürüşməsini alır.

Bu sorğuların nəticəsi dizayner üçün və ya bütün ISBN, PUB_ID, CATEGORY_ID və s. İlə yaxından tanış olan üçün düzgün görünür, lakin digər istifadəçilər üçün bu kimliklər qara qutudur. Bunun nə olduğunu və hansı kitab olduğunu anlamayacaqlar. Buna görə mənalı bir nəticə təmin etmək lazımdır.

Yuxarıdakı BOOK_COPY üzərindəki sadə sorğunu nəzərdən keçirin. İstifadəçinin anlamadığı ISBN -ni göstərir. Nəticədə kitabın adı da göstərilsə, onların istəyinə bir məna verər. Belə bir nəticə əldə etmək üçün kitabın adını KİTABLAR cədvəlindən alacağımız yuxarıdakı sorğuda da göstərməliyik. Bəs yuxarıdakı sorğudan əldə edilən ISBN -lər üçün kitab adlarını əldə etmək üçün KİTABLAR cədvəlini necə soruşmalıyıq? BOOKS və BOOK_COPY ISBN vasitəsi ilə xəritələndiyi üçün hər ikisini də sorğu edə bilərik masaları ISBN istifadə edərək onları birləşdirərək.

SELECT * FROM BOOKS B, BOOK_COPY BC
WHERE B.ISBN = BC.ISBN;

Bu, BOOKS cədvəlinin ISBN və BOOK_COPY cədvəlinin ISBN cədvəlinin uyğunluğunu göstərəcəkdir. Beləliklə, hər iki cədvəlin ISBN-nə uyğun gələn qeydləri əldə edəcəyik.

Ancaq yuxarıdakı sorğu hər iki cədvəldən bütün sütunları seçdi. Ancaq istifadəçi kitabların nüsxələrini görmək istədi. Beləliklə, səhifə sayının, yayıncı kimliyinin və s.-nin göstərilməsi burada əhəmiyyətsizdir. Buna görə yuxarıdakı sorğudakı sütunların sayını tələb olunanlarla məhdudlaşdırmalıyıq. Beləliklə sorğu aşağıdakı kimi olur. İndi sorğunun mənalı nəticəsi olan məhdud sütunları var.

SELECT BC.ISBN, B.BOOK_NAME, BC.COPY_NUM, BC.RECIEVED_DATE
     FROM BOOKS B, BOOK_COPY BC
   WHERE B.ISBN = BC.ISBN;

 

Crack Sistemi Dizayn Müsahibələri
Translate »