שם הכותב: תאריך: 03 נובמבר 2013

שיעור 4 – 03/11/13

חידוד לגבי שיעורי הבית –

בהנחה שבטבלת הפרויקטים יש 100 פרויקטים שונים וטבלת פרויקטים מיוחדים מהווה הרחבת אינפורמציה לגבי פרויקטים מסוימים, קשר הגומלין יהיה תמיד מטבלת הפרויקטים לטבלת הפרויקטים המיוחדים – יש להקליד קודם כל את הפרטים של פרויקטים בטבלת פרויקטים ורק אחר כך את הפרטים של פרויקטים בטבלת פרויקטים מיוחדים.
בנוסף, כיוון שמדובר בקשר של יחיד ליחיד, יש צורך שהשמות בשתי הטבלאות יהיו זהות וגם על תכונות השדה להיות זהות (סוג, אורך וכדומה).

הערה לגבי SELECT :
ניתן לשים 3 איברים שונים – שדה מהטבלאות, שדה מחושב או שימוש בפונקציה (COUNT, SUM וכדומה). ההבדל היחיד הוא שכאשר משתמשים בפונקציות, בינתיים זהו השדה היחיד שיהיה שם –

SELECT E.FirstName, E.LastName, E.BirthDate

FROM Employees AS E

SELECT SUM (O.Freight)

FROM Orders AS O

תתקבל תוצאה אחת בלבד ולא ניתן שיהיו יותר מפונקציה אחת.

הערה לגבי FROM :
נרשום את הטבלה או את הטבלאות ואת הקשרים בין הטבלאות.

הערה לגבי WHERE :
בקריטריון של עולם הטקסט –

WHERE E.FirstName LIKE 'A%'

בקריטריון של עולם המספרים –

WHERE O.Freight > 5

בקריטריון של תאריך –

WHERE E.BirthDate >= '01/01/1952'


בתוך WHERE כאשר משתמשים ב-OR או ב-AND יש לחזור על הקריטריון שוב –

E.FirstName LIKE 'z%' OR E.LastName LIKE '%w'

שימוש ב-IN מכניס מספר ערכים אפשריים לשדה (שימוש חלופי ל-OR).

על אותו משקל ניתן להשתמש גם ב-NOTIN כדי להוציא ערכים אפשריים משדה.

פיתרון עבודה כיתה:

use Northwind

 1. הצג את שמות העובדים אשר ששמם מתחיל או מסתיים באות A, הצג שם מלא ותאריך העסקה.

select e.FirstName+' '+e.LastName AS 'FullName', e.HireDate
from Employees AS E
where e.FirstName+' '+e.LastName like 'A%' or e.FirstName+' '+e.LastName like '%A'

 2. הצג את סכום עלויות ההובלה . הערה יש להשתמש בפונקציה SUM , יש להציג רק את סכום ההובלה.

SELECT sum(o.Freight)

from Orders AS O

 3. הצג את ההזמנות אשר עלות ההובלה שלהם גבוהה מ-850 וקטנה מ-1. הצג את כל נתוני ההזמנות.

SELECT O.*

FROM Orders AS O

WHERE O.Freight >= 850 OR O.Freight <= 1

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

SELECT E.*
FROM Employees AS E
WHERE MONTH(E.BirthDate) = 7 OR MONTH(E.BirthDate) = 8 OR MONTH(E.BirthDate) = 10

אפשרות נוספת –

SELECT E.*

FROM Employees AS E

WHERE MONTH(E.BirthDate) IN(7,8,10)

 6. הצג את הממוצע הכולל של מחיר המחירון (UnitPrice) של כלל המוצרים מתוך טבלה Products. הצג רק את הממוצע.

SELECT AVG(P.UnitPrice)

FROM Products AS P

7. הצג ספקים אשר גרים במדינות USA ו-UK .הצג את כלל הנתונים מטבלת ספקים (Supplier).

SELECT S.*

FROM Suppliers AS S

WHERE S.Country LIKE 'USA' OR S.Country LIKE 'UK'

אפשרות נוספת –

SELECT S.*

FROM Suppliers AS S

WHERE S.Country IN('USA','UK')

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

כללי עבודה:
קשרי הגומלין מופיעים תמיד ב-FROM במבנה הכללי הבא:

FROM Table1 AS NickName INNER JOIN Table2 AS NickName

ON TableNickName2.FieldKey=TableNickName1.FieldKey

שני חלקים מהותיים – סוג הקשר והקשר עצמו. כאשר INNER JOIN הוא סוג קשר הגומלין ו-ON מייצר הקשר עצמו ויציג תמיד את הקשר בין המפתח הראשי למפתח זר.

 תרגול כיתה:

  1. הצג לכל לקוח CompanyName ו-Country ואת ההזמנות שלו – קוד הזמנה ותאריך הזמנה רק עבור לקוחות ממדינה שמתחילה באות U ותאריך ההזמנה בחודש אוקטובר.

SELECTC.CompanyName,C.Country,O.OrderID,O.OrderDate

FROMCustomersASCINNERJOINOrdersASO

ON O.CustomerID=C.CustomerID

WHERE C.CountryLIKE 'U%' ANDMONTH(O.OrderDate)=10

  1. הצג לכל עובד את המוצרים שטיפל בהם – הצג שם מלא של העובד, שם המוצר וכמות היחידות במלאי.

SELECT E.FirstName+' '+E.LastName,P.ProductName,P.UnitsInStock

FROM EmployeesASEINNERJOIN ORDERSASOINNERJOIN [Order Details[ASODINNERJOIN ProductsASP 

ON P.ProductID=OD.ProductID

ON OD.OrderID=O.OrderID

ON O.EmployeeID=E.EmployeeID


שייך לנושאים: אריק אדלמן, מסדי נתונים


− 8 = אחד

תואר ראשון
תואר שני
מרצים