שאילתות משנה של SQL

חשוב: מאמר זה תורגם בתרגום מכונה, ראה כתב ויתור. תוכל למצוא את הגרסה באנגלית של המאמר כאן לעיונך.

שאילתת משנה היא משפט SELECT המקונן בתוך משפט SELECT,‏ SELECT...INTO,‏ INSERT...INTO,‏ DELETE או UPDATE או בתוך שאילתת משנה אחרת.

תחביר

באפשרותך להשתמש בשלוש צורות תחביר כדי ליצור שאילתת משנה:

comparison [ANY | ALL | SOME] (sqlstatement)‎

expression [NOT] IN (sqlstatement)‎

‎[NOT] EXISTS (sqlstatement)‎

שאילתת משנה מכילה את החלקים הבאים:

חלק

תיאור

comparison

ביטוי ואופרטור השוואה המשווה את הביטוי לתוצאות של שאילתת המשנה.

expression

ביטוי שמתבצע חיפוש שלו בערכת התוצאות של שאילתת המשנה.

sqlstatement

משפט SELECT, לפי תבנית וחוקים זהים לאלה של כל משפט SELECT. יש לתחום את המשפט בסוגריים.


הערות

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

השתמש בפרדיקאט ANY או בפרדיקאט SOME, השקולים זה לזה, כדי לאחזר רשומות בשאילתה הראשית העומדות בהשוואה לכל אחת מהרשומות שאוחזרו בשאילתת המשנה. הדוגמה הבאה מחזירה את כל המוצרים שהמחיר ליחידה שלהם גדול יותר מזה של כל מוצר הנמכר בהנחה של 25 אחוז ומעלה:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

השתמש בפרדיקאט ALL כדי לאחזר רק את הרשומות בשאילתה הראשית העומדות בהשוואה לכל הרשומות שאוחזרו בשאילתת המשנה. אם תחליף את ANY ב- ALL בדוגמה לעיל, תחזיר השאילתה רק את המוצרים שהמחיר ליחידה שלהם גדול מזה של כל המוצרים הנמכרים בהנחה של 25 אחוז ומעלה. שימוש זה מגביל את הרשומות שיוחזרו באופן ניכר.

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

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

לחלופין, באפשרותך להשתמש בפרדיקאט NOT IN כדי לאחזר רק את הרשומות בשאילתה העיקרית עבורן לא קיימת רשומה בשאילתת המשנה המכילה ערך זהה לשלהן.

השתמש בפרדיקאט EXISTS (עם המילה השמורה האופציונלית NOT) בהשוואות True/False כדי לקבוע אם שאילתת המשנה מחזירה רשומות כלשהן.

באפשרותך גם להשתמש בכינויי שמות טבלה בשאילתת כדי להפנות אל טבלאות שצוינו בפסוקית from מחוץ שאילתת המשנה. הדוגמה הבאה מחזירה את שמות העובדים משכורות שאת הן השכר הממוצע של כל העובדים בעלי אותו תפקיד גדול או שווה. הטבלה Employees מבוטאת את הכינוי "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

בדוגמה לעיל, השימוש במילה שמורה AS הוא אופציונלי.

שאילתות משנה מסוימות אינן בשאילתות הצלבות — ספציפית, כמו פרדיקאטים (אלה במשפט where). שאילתות משנה כפלט (אלה שברשימה SELECT) אינם מותרים בשאילתות הצלבות.



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

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Office Insider

האם מידע זה היה שימושי?

תודה על המשוב!

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×