SQL SERVER-də View
Salam hörmətli dostlar. SQL serverlə mən bir layihə hazırlayıram. SQL bazada bir neçə cədvəl yaratmışam. Həmin cədvəllər vasitəsi ilədə bir neçə view-lar qurmuşam. İndi belə bir problem çıxıb. Hansısa cədvəldə məlumat olmayanda yaratdığım view-da olan əlaqəli digər cədvəllərində məlumatı göstərilmir. Prinsipcə belə olmalıdırki, əgər cədvəldə məlumat varsa view-da həmin məlumat göstərilsin əks halda dəyər boş qalsın amma o biri cədvəllərin məlumatı göstərilsin. Diqqətinizə görə minnətdaram
Baxılıb: 2765 dəfə
Cavablar ( 4 )
Salam Toğrul bəy.
Bu tip sual üçün çox az məlumat vermisiniz. Sualınızı biraz dəqiqləşdirin. İlkin olaraq cədvəllər arasında qurduğunuz əlaqələri yoxlayın. Daha sonra View -da istidadə olunan cədvəllərin birləşməsi əmrlərinə diqqət yetirin: İNNER JOİN, LEFT JOİN və s.
Ümumiyyətlə cədvəllər arasında qurulan bütün əlaqələri: Primary Key – Foreign Key tapmaq üçün aşağıdakı sorğudan istifadə edə bilərsiniz:
Salam Rauf bəy. Sualımı cavablandırdığınız üçün sizə öncədən təşəkkür edirəm
Cədvələr arasında əlaqəni qurmaq üçün Primary Key-dən istifadə etmişəm.View-da istifadə etdiyim cədvəllər arasındakı əlaqəni INNER JOIN komandasından, View-da istifadə etdiyim View-lar arasındakı əlaqəni CROSS JOIN komandasından istifadə etmişəm
Toğtul bəy. Əslində məni sonuncu mərhələ maraqlandırır. View -lar arasında CROSS JOİN əmrindən istifadə etmisiniz. Bildiyiniz kimi CROSS JOİN çox nadir hallarda istifadə olunur və mürəkkəb cədvəllərdə istifadəsi tövsiyə olunmur. Əgər CROSS JOİN əmrinə WHERE filtri əlavə edilməyibsə, sütunlarda olan sətirləri bir birinə vuracaq, məsələn: table1 də 100 sətir var, table2 də isə 5 sətir var, CROSS JOİN nəticəsi 500 sətir olacaq, hətta hər iki cədvəldə eyni məlumat olsa belə. Əgər WHERE filtri əlavə edilibsə, bu İNNER JOİN – lə eyni effekti verir, məsələn aşağıdakı sorğular eyni nəticəni verəcək:
Cross join
Inner join
Buna görə də, View -lar arasında əlaqələri İNNER JOİN vasitəsilə yaradılmasını məsləhət görərdim.
Rauf bəy Siz düzgün qeyd etdiniz. Mən CROSS JOIN əmrindən istifadə edərkən eyni zamanda WHERE filtirindən istifadə etmişəm