משפט SQL

nscom2k

New member
משפט SQL

האם ניתן באמצעות משפט SQL להוציא את כל המספרים בין שני מספרים נתונים?
 

גרי רשף

New member
במקרה קיבלתי היום פתרון לבעיה../images/Emo22.gif

במקרה קיבלתי היום את מהדורת נובמבר של T_SQL Solutions ובמאמר שכותרתו:
Generating Sequences in T_SQL / by Alexander Netrebchenko​
הוצע לבעיה הפתרון הבא:
Select (a1.id + a0.id) id From ( Select 0 id Union All Select 1 Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 ) a0 Cross Join ( Select 0 id Union All Select 10 Union All Select 20 Union All Select 30 Union All Select 40 Union All Select 50 Union All Select 60 Union All Select 70 Union All Select 80 Union All 0Select 9 ) a1​
אם הבנת את השימוש ב-Cross Join תוכל לפתח את זה הלאה ולהוסיף Cross Join שלישי כדי לקבל את כל הערכים עד 999. במאמר מראים איך להשתמש בפטנט הזה כדי ליצור UDF שיבצע את המשימה לפי שני פרמטרים, אבל זה כבר חורג מגבולות הפורום ומהווה פגיעה בזכויות היוצרים של כתב העת.
 

eli_leiba

New member
עושים את זה ע"י מכפלה קרטזית בין

שתי טבלאות נגזרת למשל אם רוצים את כל המספרים בין 1 ל 100 עושים select 10 * a.x + b.y from ( select 0 as x from dual union all select 1 as x from dual union all select 2 as x from dual union all select 3 as x from dual union all select 4 as x from dual union all select 5 as x from dual union all select 6 as x from dual union all select 7 as x from dual union all select 8 as x from dual union all select 9 as x from dual ) a , ( select 0 as y from dual union all select 1 as y from dual union all select 2 as y from dual union all select 3 as y from dual union all select 4 as y from dual union all select 5 as y from dual union all select 6 as y from dual union all select 7 as y from dual union all select 8 as y from dual union all select 9 as y from dual ) b ;
 
למעלה