Union לעומת Or

יום שבת, יולי 6, 2013

מה יותר טוב – Union או Or? רגע, איזו מין שאלה זו? Union זה Union ו-Or זה Or.. מה הקשר? הקשר הוא שבמקום לכתוב תנאי Or אפשר לכאורה לבצע Union בין השורות שעונות על התנאי הראשון והשורות שעונות על התנאי השני. לא ככה? אה.. יש בזה משהו, אבל זה לא עובד הפוך: אם נעשה Union בין שתי טבלאות שונות, לא נוכל להמיר אותו ב-Or. כשחושבים על זה – זה נשמע נכון, אבל בכל זאת- מה קורה כשכן? בואו ננסה, וניצור קודם כל טבלה מתאימה: ...
אין תגובות

Union & Union All

יום שני, פברואר 18, 2013

מה שטרד היום את מנוחתי לא היה האיום האיראני, לא האזהרות מפני רעידת אדמה ממשמשת ובאה, ואף לא הגרעון בתקציב; אלא מה קורה כשמשלבים באותה שליפה פקודות Union (שמבצעת Distinct) ו-Union All.. הנתונים: Create Table #T(N Int); Go   Insert Into #T Select 1; Insert Into #T Select 2; Insert Into #T Select 2; Insert Into #T Select 3; Insert Into #T Select 3; ...
2 תגובות

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

יום שני, פברואר 28, 2011

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

שליפה מטבלאות המתייחסות זו לזו

יום שלישי, יולי 6, 2010

ההיכרות הראשונה שלי עם עולם בסיסי הנתונים הרלציוניים הייתה לפני כחמש עשרה שנה בקורס אקסס – באחת מגרסאותיו הראשונות. אם לפני הקורס חשבתי שאקסס זה אקסל משופר, הרי לאחר השיעור הראשון בו הראו לנו איך יוצרים טבלה, מכניסים לתוכה נתונים, ממינים ומפלטרים אותה- התחלתי לחשוש שמדובר באקסל נחות ומנוון.. רק לאחר שהראו לנו איך עושים Join בין טבלאות אמרתי בליבי "אההה.." ארוך שפירושו הוא "עכשיו אני מבין..". לזכר ימי התום האלו אני אנסה לרכז בפוסט אחד את כל הדרכים לשלוף מטבלאות תוך שהן מתייחסות זו לזו. נתחיל ביצירת שתי טבלאות לצורך ההדגמות: Use tempdb; Go If Object_Id('T_Ovdim') Is Not Null Drop Table T_Ovdim Go Create Table T_Ovdim(ID Int...