CROSS JOIN vs CROSS APPLY

נתן.ל

New member
CROSS JOIN vs CROSS APPLY

טוב, אני מקווה שזו לא שאלה טיפשית מידי אבל אשמח אם תעזרו לי לאושש(או לסתור) את התיאוריה שבניתי לעצמי.

מישהו יכול בבקשה להסביר לי מה ההבדל בין שני אלה?


SQL SERVER כמובן.

תודה
נתן
 

גרי רשף

New member
הסינטקס שונה כמובן

בגדול- Cross Apply יכול לעשות כל מה ש-Cross Join ו-Inner Join עושים,
ועוד כהנה וכהנה.

מה התיאוריה שבנית לעצמך?
 

נתן.ל

New member
אוקי, אז על פי מה שאני הבנתי

ההבדל בניהם זה בעיקר ברמת הSCOP של המטה דאטה.
כלומר, בCross Apply אפשרי להשתמש בפרמטרים מתוך הQuery העליון\הראשי ואילו בCross Join אי אפשר לעשות זאת, מכיוון שהוא עומד בפני עצמו ואינו מכיר את השאילתא החיצונית.

אני בכיוון?
 

גרי רשף

New member


קודם כל- Cross Join זה Join ללא תנאי On.
בערך כמו לכתוב Inner Join .. On 1=1 (התנאי תמיד מתקיים).

במקום
Select *
From T1
Cross Join T2;
אפשר לכתוב
Select *
From T1
Cross Apply (Select * From T2) T2;
ובמקום
Select *
From T1
Inner Join T2
On T1.ID=T2.ID;
אפשר לכתוב
Select *
From T1
Croos Apply (Select * From T2 Where T2.ID=T1.ID;
עד כאן - כל מה שאפשר בעזרת Join אפשר בעזרת Cross Apply,
ובנוסף מה שציינת לגבי יכולתו לפנות למה ש"בחוץ" שאת זה ה-Joins אינם יכולים לעשות.
 

גרי רשף

New member
שכחתי ) T2 בסוף השליפה האחרונה

Select *
From T1
Croos Apply (Select * From T2 Where T2.ID=T1.ID) T2;
 
למעלה