arrow

פרק 2 - שליפה ותמרון נתונים

צרופים

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

הכח האמיתי של מסד נתונים SQL טמון בכך שאפשר ליצור תצוגות המבוססות על מידע מכמה טבלאות, תוך שימוש בפעולת JOIN.

כדי ליצור JOIN מספיק לציין שתים או יותר טבלאות בפקודת SELECT-FROM. למשל, הקטע הבא שממזג את הטבלאות של לקוחות (CLIENTS) והמכירות (SALES) לידי תצוגה אחת.

SELECT C_NAME, S_NUM, S_QUANTITY
FROM SALES, CLIENTS;
		

הקטע הזה יניב את התוצאות הבאות:

C_NAME			S_NUM	S_QUANTITY
------------------------------------------
Jason Lim		001	1
Rick Tan		001	1
Stephen Petersen	001	1
Jason Lim		002	2
Rick Tan		002	2
Stephen Petersen	002	2
Jason Lim		003	1
Rick Tan		003	1
Stephen Petersen	003	1
-----------------------------------------
		

שים לב לכך שהתוצאות מכילות כל צירוף אפשרי של שתי הטבלאות. מה קורה כאשר לשתי הטבלאות יש עמודה (או עמודות) עם שם זהה? במקרים שבהם לשתי עמודות יש שם זהה צריך לציין את שם הטבלה וגם את שם העמודה עם נקודה ביניהם. בדוגמא הבאה עמודה בשם C_NUM נמצאת גם בטבלת הלקוחות  (CLIENTS) וגם בטבלת המכירות (SALES):

SELECT C_NAME, S_NUM, SALES.C_NUM
FROM SALES, CLIENTS;
		

במקרה זה SQL ימשוך נתונים מעמודת C_NUM אשר נמצאת בטבלת המכירות ולא מזו שנמצאת בטבלת הלקוחות. 

האפשרות לציין שמות עמודה במפורש תאפשר לנו בהמשך להרכיב JOIN-ים מורכבים ויעילים יותר, תוך שימוש בפסוקית WHERE.

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

SELECT C_NAME, S_NUM, S_AMOUNT
FROM SALES, CLIENTS
WHERE CLIENTS.C_NUM = SALES.C_NUM;
		

נקבל:

C_NAME			S_NUM	S_AMOUNT
----------------------------------------
Rick Tan		001	 99.99
Jason Lim		002	199.98
Stephen Petersen	003	865.99
----------------------------------------
		

שים לב שכל האופרטורים כמו LIKE/NOT LIKE, IN/NOT IN NULL/NOT NULL, AND/OR/NOT, COUNT, AVG, וכו' שעובדים עם SELECT עובדים גם עם JOIN.

arrow ממוצעים
תוכן עניינים
תת שאילתות arrow


פרק 1 -> פרק 2 -> פרק 3 -> פרק 4 -> פרק 5 ->