
UnitsOnOrder > 0, 17 מוצרים), חלקן עם מיון, סינון לפי ספק או קטגוריה. החלק Where UnitsOnOrder > 0 חוזר בכולן.Create View ProductsOnOrder As Select * From Products Where UnitsOnOrder > 0, ואחריו go כדי שהפקודה תסתיים. ה-view שומר שאילתת select, ובשימוש המערכת מריצה אותה.Order By בהגדרה גרמה לשגיאה, והוא הוסר.Select * From ProductsOnOrder מתייחס אליו כאל טבלה. אפשר להוסיף עליו Order By וגם Where לפי CategoryID = 2 או SupplierID = 1, ועדיין חוסך לכתוב את התנאי המקורי.Alter: כשרוצים שה-view יביא מראש רק עמודות מסוימות (ProductID, ProductName, UnitPrice, UnitsOnOrder), Create View נכשל כי הוא כבר קיים, ולכן משתמשים ב-Alter View. אחרי השינוי אי אפשר לבקש ממנו עמודה שלא הוגדרה בו, כמו CategoryID.Drop View ProductsOnOrder מוחק אותו, ולפעמים מקדימים אותו ל-Create. אפשר גם לכתוב Create Or Alter View, שיוצר אותו אם אינו קיים ומעדכן אם כן (בדוגמה נוסף SupplierID).הטקסט המלא של הדקות הראשונות בהרצאה «יצירה ושימוש ב-SQL Views» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו עוברים למשהו שנקרא Vue. לצורך כך אנחנו חוזרים לנורפווינד. בואו נניח שבמערכת שלנו יש המון פעולות שאנחנו רוצים לבצע על מוצרים.
בואו נסתכל רגע על טבלת המוצרים ונניח שבמערכת שלנו יש כל מיני שאילתות וחתכים ופעולות על המוצרים עצמם. אני רואה שיש לנו כאן איזושהי עמודה Units on Order.
אלה בעצם מוצרים שכרגע נמצאים בהזמנה. אם זה 0 אז כרגע כרגע לא מזמינים את המוצר הזה ואם זה 70 אז כרגע מזמינים 70 יחידות מהמוצר וברגע שיספקו אותו זה יעבור להיות 0. יש לנו גם את הקוד של הספק יש לנו את הקוד של הקטגוריה כמו שאנחנו ראינו יש לנו את השם של המוצר ובוא נניח שאחת מהשאילתות אומרת אנחנו רוצים לבצע סלקט של כל המוצרים שנמצאים כרגע בהזמנה units on order זה יהיה מאוד
מאוד פשוט סלקט all from Products were units on order גדול מאפס. אם אנחנו נריץ את זה, אז אנחנו נקבל כמובן כאן את כל המוצרים האלה.
שאם אני מסתכל כרגע על units on order, אתם רואים שכולם גדולים מאפס, יש לנו 17 מוצרים כרגע בהזמנה. אבל אמרנו שיש המון שאילתות במערכת שלנו.
יוזר רוצה לראות חתכים שונים שאנחנו מספקים לו, ובואו נניח שדבר נוסף זה שאנחנו לא רוצים להביא את כל העמודות. אנחנו רוצים להביא רק Product Name.
בואו נגיד Product ID גם זה חשוב. Product Name, אנחנו רוצים להביא את ה-Unit Price, ובאמת כמה נמצאים בהזמנה. Units on Order, בואו נריץ את השאילתה הזאת, ונקבל כמובן פחות רשומות, פחות, סליחה, עמודות, אבל עדיין 17 רשומות.
דבר נוסף שאנחנו רוצים לעשות זה שאילתה אחרת שמסדרת את הכל אלפביתית. אז בואו נניח שיש לנו פה order by, נניח ה-product name בסדר אלפביתי.
בואו נריץ את זה, האמת נעשה בעצם עוד שאילתה נפרדת. ואם אנחנו מריצים את זה עכשיו אז אנחנו רואים שיש לנו כאן את המידע מסודר לפי השמות של המוצרים.
יכול להיות שאנחנו רוצים לקבל את אותו הדבר, אבל רק עבור ספק מסוים. אז יש לנו פה איזשהו end, product, לא product, סליחה, supplier ID שווה 1.
אנחנו רוצים להתעסק עם כל הדברים האלה, רק אם הספק הוא 1. יכול להיות ששאילתה נוספת אומרת, תשמע, זה בדיוק מתאים לי, אבל אני רוצה לבדוק רק קטגורי ID מסוים.
לא יודע, אז קטגורי ID 2, בואו נראה, נריץ את זה. ונקבל קטגורי ID 2, שזה משהו אחר. כמובן שפה כדאי לנו להציג אולי את הסופלייר, זה, סליחה, זה קטגורי ID, ופה נציג את הסופלייר ID, ואז נוכל לראות, אם אני מריץ את זה, שקוד קטגורי הווה 2, ואם אני מריץ את זה, בעצם שהסופלייר הוא 1. ופתאום אני שם לב שיש לנו המון פעולות
שנדרשות על מוצרים שכרגע נמצאים בהזמנה. המון המון פעולות אנחנו רוצים לבצע על מוצרים שנמצאים בהזמנה, ואנחנו רוצים חתכים שונים שלהם, ואנחנו רוצים רק של קטגוריות מסוימות, ורק של ספקים מסוימים, וכל פעם יש לנו את אותה שאילתא או חלק מהשאילתא שחוזר חוזר חוזר על עצמה.
שאילתא שחוזרת על עצמה, תביא לי units on order גדול מאפס. במקום לחזור על הקוד הזה שוב ושוב ושוב ושוב, אנחנו יכולים לייצר משהו שנקרא view.
view המטרה שלו זה שאילתת סלקט ששומרים בדאטאבייס מוכנה מראש. כאשר אנחנו מסתכלים על ה-view או מתייחסים אליו, המערכת פשוט נותנת לנו את השאילתה ומריצה אותה.
אז בואו נייצר view שחוסך לנו את השאילתה הזאת, Units on Order גדול מאפס. זה יהיה create view אנחנו נותנים לו שם כל view חייב להיות שם בוא נניח נקרא לו products on order מוצרים שהם בהזמנה כרגע אנחנו רושמים את המילה as יורדים שורה ופשוט נותנים את כלל השאילתה הבסיסית שמביאה לנו את זה select בדרך כלל זה יהיה all לא חייבים אבל
from products where units on order גדול מאפס ובוא נניח אפילו נוסיף את המיון כבר על הדרך order by לא תמיד חייבים אבל סתם בשביל שנראה עוד משהו בview product name אפשר גם למען את זה לפי הunits on order או כל דבר אחר חשוב חשוב go כאן בכדי שאם יהיה פה עוד דברים כאן כתובים ונריץ הכל אז שהוא לא יתייחס לדברים הבאים כי go מסיים את הפקודה
ומריץ אותה אז אני מסמן את הכל מבצע execute ואני רואה שהוא נתן לי שגיאה באה שגיאה, אורדר ביי, זה אין לבעלי דין views, אוי, טעות שלי, אי אפשר לבצע מיון, טוב, בואו נוריד את זה, מיון אי אפשר לבצע, נריץ בלי מיון, או, יופי, אז אני רואה שהוא סיים בהצלחה, ואנחנו יכולים לראות האמת את ה-view הזה, אם אנחנו מסתכלים כאן,
נסגור רגע את כל הטבלאות ונראה שיש פה views, ונעשה איזה ריפרש, יש פה כל מיני views כבר מוכנים בנורטווינד, כמו שיש טבלאות מוכנות בנורפווינד.
בואו נחפש את ה-view שלנו, הנה הוא, Products on Order, מוצרים שבהזמנה. אבל מה עכשיו אנחנו עושים עם ה-view הזה?
אם אנחנו עכשיו רוצים לבצע את השאילתות האלה, אנחנו יכולים לעשות אותם במקום על הטבלה המקורית, לבצע אותם על ה-view, וזה חוסך לנו. האמת שבואו קודם כל נעשה סלקט פשוט, ואנחנו מתייחסים ל-view כאילו שהוא טבלה.
בא לתת מבט על טבלה עם איזשהו חתך מסוים. במקום להתייחס לטבלת המוצרים אנחנו מתייחסים עכשיו ל-view. זאת אומרת אם אנחנו נריץ את זה אז אנחנו בעצם נקבל את מה שה-view מביא לנו וה-view מביא לנו את כל העמודות מטבלת המוצרים אבל רק כאלה שהיו ניצן אורדר שלהם גדולים מאפס וזה מה שאנחנו רואים פה.
אפשר לבצע עוד הרבה חתכים על-view לדוגמה כל זה נעשה אותו על ה-view אנחנו יכולים להוריד את ה-where, נריץ, ואנחנו רואים שזה חסך לנו, נכון? במקום לבצע שוב פעם את ה-units on order הזה.
בואו נראה, order by. ניקח את זה, נשים פה, נוריד את ה-where, שימו לב, זה מקצר לי שאילתות, ונבצע את המיון. יופי, כאן הוא כן מאפשר לנו למיין. אם ה-view, הוא מביא לי את הנתונים של ה-view, אז הוא כן מאפשר לי למיין.
בואו נראה את השאילתה הזאת, היא קצת יותר מתקדמת. ניקח את השם של ה-view, נשים פה ונוריד את ה-wear וכן נשאיר קטגורי ID שווה 2, אין לי צורך ב-order by וצריך להיות ה-wear פה,