מדריך SQL – איחוד טבלאות (JOIN)

‏ • Microsoft

פקודת JOIN מאפשרת לנו לבצע שליפות נתונים המגיעים מיותר מטבלה אחת.

לפני שממשיכים האלה, יש לוודא שעברתם על המדריכים הבאים:

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

טבלת המוצרים:

מדריך SQL - איחוד טבלאות (JOIN)

טבלת ההזמנות:

מדריך SQL - איחוד טבלאות (JOIN)

 

דוגמא: שליפת רשימת ההזמנות, כאשר לכל פריט נציג גם את השם והמחיר:

SELECT Orders.OrderID, Orders.ProductID, Products.ProductName, Products.Price
FROM   Orders
JOIN   Products ON (Orders.ProductID = Products.ProductID
)

התוצאה:

מדריך SQL - איחוד טבלאות (JOIN)

נסביר את השליפה הזאת שלב אחרי שלב.

ראשית, בשורת ה- SELECT אנחנו רואים שאנחנו מביאים נתונים משתי טבלאות. עבור כל שדה, ציינו מאיזו טבלה הוא מגיע ע”י כך שכתבנו את שם הטבלה לפני שם העמודה. למשל Orders.OrderID מציין שאת הערך של השדה OrderID אנחנו מביאים מהטבלה Orders.

שנית, אנחנו רואים שהשליפה מבוצעת מטבלת Orders, כאשר יש איחוד לטבלת Products ע”י הביטוי JOIN Products. כך אנחנו אומרים שהשליפה תבוצע על יותר מטבלה אחת.

לבסוף אנחנו רואים את ביטוי ה- ON שמגדיר כיצד לאחד את הטבלאות. במקרה שלנו אנחנו רוצים לאחד את הטבלאות ע”י השדה ProductID שקיים בשתי הטבלאות ולכן מגדירים את השיווון ביניהם.

כתיב מקוצר:

ניתן היה לתת לכל טבלה כינוי מקוצר ע”י שימוש במילה AS:

SELECT o.OrderID, o.ProductID, p.ProductName, p.Price
FROM   Orders AS o
JOIN   Products AS p ON (o.ProductID = p.ProductID
)

לכל טבלה הגדרנו שם מקוצר (o לטבלת Orders ו- p לטבלת Products), ואז השליפה הופכת להיות טיפה יותר קריאה.

 

דוגמא: שליפת ההזמנות ומחיריהן, ע”י הוספת חישוב של כמות היחידות כפול המחיר:

SELECT o.OrderID, p.ProductName, p.Price, o.Units, p.Price * o.Units AS Cost
FROM   Orders AS o
JOIN   Products AS p ON (o.ProductID = p.ProductID
)

התוצאה:

מדריך SQL - איחוד טבלאות (JOIN)

שימו לב ליצירת שם לעמודת החישוב ע”י השימוש בביטוי AS בשורת ה- SELECT.

 

כמובן שלשאילתות העושות שימוש ב- JOIN ניתן להוסיף שימוש בפסוקית WHERE וב- ORDER BY. לדוגמא:

שליפת ההזמנות של הפריטים מקטגוריה מספר 2, ומחיריהן, במיון לפי סכום ההזמנה בסדר יורד.

SELECT o.OrderID, p.ProductName, p.Price, o.Units, p.Price * o.Units AS Cost
FROM   Orders AS o
JOIN   Products AS p ON (o.ProductID = p.ProductID)
WHERE  p.Category = 2
ORDER BY Cost 
DESC

התוצאה:

מדריך SQL - איחוד טבלאות (JOIN)

שימו לב שהמיון נעשה ע”פ העמודה Cost, שהיא עמודה חדשה שיצרנו רק לצורך השליפה והיא תוצאה של חישוב בגוף השאילתה. כיוון שנתנו לעמודה הזאת שם ע”י שימוש בביטוי AS יכולנו להשתמש בו בפסוקיות אחרות כמו פסוקית ה- ORDER BY.

תגיות: , ,

תגובות בפייסבוק