פישוט שאילתות באמצעות מילת המפתח WITH
חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 49 מתוך 72.
שאילתות עלולות להסתבך כשמוסיפים להן שאילתות פנימיות רבות. לדוגמה, הנה שאילתה שיש בה שאילתות משנה רבות:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)כדי להקל על כך, נוכל להשתמש במילת המפתח WITH query_name AS (...). היא מאפשרת לנו לשמור שאילתה בשם ולהשתמש בה בכל מקום שנרצה:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN (SELECT col1 FROM query2) AND col4 IN (SELECT col5 FROM query1)כאן השתמשנו שוב ב־query1 בתוך query2 ובשאילתה הראשית.
אתגר
קלטבלאות ועמודות זמינות:
devices_specs:device_id,width,height,num_features,opiniondevices_score:device_id,score
כתבו שאילתה ש:
- תחילה מזהה "large devices" (מכשירים שה-
widthשלהם גדול מ-200) - לאחר מכן מחשבת את הציון הממוצע של המכשירים הגדולים האלה. קראו לעמודה הזו
average_score
השתמשו בסעיף WITH כדי לפתור את הבעיה.
נסו בעצמכם
-- שלב 1: תנו שם לקבוצת תוצאות זמנית שמכילה רק את המכשירים שמעניינים אתכם
WITH large_devices AS (
SELECT ____
FROM devices_specs
WHERE ____
)
-- שלב 2: השתמשו שוב בקבוצת התוצאות הזמנית הזו בתוך השאילתה הראשית
SELECT ____ AS average_score
FROM devices_score
WHERE device_id IN (____);השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
2תנאים
יסודות התנאיםמילת המפתח ANDמילת המפתח ORמילת המפתח NOTשילוב של תנאים מרוביםסוגרייםערכים בוליאניים3פורמט החזרה ספציפי
ערכי Nullמיון תוצאות – חלק 1מיון תוצאות – חלק 2סיכום – חברת אבטחת סייברהגבלת מספר הרשומותסיכום – מפעל כלי רכב6אתגרי מבוא
חזרה – בחירות לפרלמנטחזרה – מעצר חשוד בידי המשטרהחזרה – כלי משקה בברחזרה – מהנדסים עמודות חדשות9טבלאות מרובות
JOIN בסיסי חלק 1JOIN בסיסי חלק 2סיכום – JOINJOIN עצמיסיכום – JOIN עצמיאיחוד (UNION)פישוט שאילתות באמצעות מילת המפתח WITHסיכום – שאילתות WITHסיכום – קבלן נדל״ןתרגלו בעצמכם: SQL אונליין