הצגת סטים בלתי תלויים במבנה טבלאי מאוחד

11/01/2011

אין תגובות

הכותרת המעט מסורבלת של הפוסט מתייחסת לשאלה ששאל הרב דוט נט:

כיצד מאחדים את הסט

1

2

3

4

עם הסט

A

B

C

D

לסט מאוחד

1,A

2,B

3,C

4,D

והתשובה הנכונה כעקרון שהוא הציג היא למספר כל סט באמצעות Row_Number ולבצע Join בינהם.

נכון כעקרון מכיוון שמדובר במקרה פרטי בו יש שני סטים בלבד, ואורכם זהה; אבל מה יקרה אם יהיו יותר סטים ואורכם לא זהה?

נניח שאנחנו מעוניינים להציג סט בו בעמודה אחת יופיעו הטבלאות, בעמודה השניה ה-Views, בשלישית הפרוצדורות וברביעית הטריגרים; ולכל רשימה אורך אחר?

נשתמש ב-Full Outer join בין הסטים, והתנאי יהיה התאמה בין המספר בטבלה ל-Coalesce של המספרים בטבלאות הקודמות:

Select  *

From    (Select Row_Number() Over(Order By name) Mispar,

        name

        From sys.tables) T

Full Join (Select Row_Number() Over(Order By name) Mispar,

        name

        From sys.views) V

        On T.Mispar=V.Mispar

Full Join (Select Row_Number() Over(Order By name) Mispar,

        name

        From sys.Procedures) P

        On Coalesce(T.Mispar,V.Mispar)=P.Mispar

Full Join (Select Row_Number() Over(Order By name) Mispar,

        name

        From sys.triggers) Tr

        On Coalesce(T.Mispar,V.Mispar,P.Mispar)=Tr.Mispar;

Go

clip_image002

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *