תת-שאילתה של SQL

מחבר:
בתאריך:

 

תת-שאילתה ( sub query ) היא שאילתה בתוך שאילתה .משתמשים בתת-שאילתה כשצריך מידע נוסף לפני שעונים על השאילתה העיקרית. במצב כזה, קודם שואלים את השאלה שמספקת את המידע הנוסף, זו תת-השאילתה, ואז עונים על השאלה עצמה.

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

אפשר לכתוב זאת כך:

תת-שאילתה (בלי שנענה עליה לא נוכל לענות על השאילתה העיקרית) : מהו המספר המקסימלי של ילדים?

השאילתה העיקרית (אחרי שענינו על תת השאילתה אנחנו יכולים לענות עליה) : מיהם העובדים שלהם מספר מקסימלי של ילדים?

הדוגמאות במדריך זה מבוססות על טבלת SQL שאותה ניתן להוריד מהקישור המצורף:

להורדה

 

תת-שאילתה הלכה למעשה

השאילתה הראשונה תענה על השאלה "מהו המספר המקסימלי של ילדים?"

SELECT MAX( `num_childs` )
FROM `workers`

והתשובה : 4

אחרי שקבלנו תשובה שהמספר המקסימלי של ילדים הוא 4, אנחנו יכולים לשאול את השאלה "לאיזה מהעובדים יש 4 ילדים?"

SELECT `workers_id`, `workers_name`, `num_childs`
FROM `workers`
WHERE `num_childs` = 4

והתשובה:

workers_id workers_name num_childs
7Yoshiahu4
12Koresh4

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


SELECT `workers_id` , `workers_name`, `num_childs`
FROM `workers`
WHERE `num_childs` = (
  SELECT MAX( `num_childs` )
  FROM `workers`
)

והתשובה:

workers_id workers_name num_childs
7Yoshiahu4
12Koresh4

לסיכום,כדי לבצע שאילתה הכוללת תת-שאילתה, נשים את תת-השאילתה בתוך סוגריים עגולים בשאילתה העיקרית.

במדריך הבא נלמד על שימוש ב-wildcards ב-SQL

לכל מדריכי ה- mySQL

 

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

הוסף תגובה חדשה

 

= 7 + 2