Friday, March 04, 2011

פעולות חיתוך ואיחוד בין קבוצות וביצוע Union בעזרת Join

דרך מעניינת להסתכל על טבלאות היא כעל קבוצות של רשומות. 
נכון שהדימוי האינטואיטיבי הוא דווקא של רשימה מסודרת (טבלה..) אבל לסדר אין חשיבות והטבלה נשארת אותה טבלה ללא קשר לאופן המיון הלוגי או הפיזי של הרשומות (זו כנראה אחת הסיבות להתעקשותה של Microsoft לא לאפשר ביצוע Order By ב-View), ובין טבלאות ניתן לבצע פעולות חיתוך ואיחוד כפי שלמדנו במבוא לתורת הקבוצות..
לצורך ההמחשה ניצור שתי טבלאות בעלות מבנה זהה, ונכניס לתוכן נתונים - חלקם זהים וחלקם שונים:

Use tempdb;
Go
If Object_Id('Tbl1') Is Not Null Drop Table Tbl1;
Go
Create Table Tbl1(ID Int Primary Key,
               Name Varchar(10),
               Date DateTime);
Go
Insert
Into Tbl1
Select 1,'Anat','19700101' Union All
Select 2,'Beni','19750201' Union All
Select 3,'Galit','19770301' Union All
Select 4,'Dana','19800401';
Go
If Object_Id('Tbl2') Is Not Null Drop Table Tbl2;
Go
Create Table Tbl2(ID Int Primary Key,
               Name Varchar(10),
               Date DateTime);
Go
Insert
Into Tbl2
Select 3,'Galit','19770301' Union All
Select 4,'Dana','19800401' Union All
Select 5,'Eli','19880501' Union All
Select 6,'Hila','19900601';
Go
clip_image002_thumb_2B130060.jpg

Read more: גרי רשף