Applies ToAccess של Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

באפשרותך לכתוב שאילתת משנה ביטוי או במשפט שפת שאילתות מובנית (SQL) ב- תצוגת SQL.

במאמר זה

שימוש בתוצאות של שאילתה כשדה בשאילתה אחרת

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

הערה: שאילתת משנה שבה אתה משתמש ככינוי שדה אינה יכולה להחזיר יותר משדה אחד.

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

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

  1. בכרטיסיה קובץ, לחץ על חדש.

  2. תחת תבניות זמינות, לחץ על תבניות לדוגמה.

  3. לחץ על Northwind ולאחר מכן לחץ על Create.

  4. בצע את ההוראות בעמוד Northwind Traders (בכרטיסיית האובייקט של Startup Screen) כדי לפתוח את מסד הנתונים, ולאחר מכן סגור את החלון Login Dialog.

  5. בכרטיסיה יצירה, בקבוצה שאילתות, לחץ על עיצוב שאילתה.

  6. לחץ על הכרטיסיה שאילתות ולאחר מכן לחץ פעמיים על הזמנות מוצר.

  7. לחץ פעמיים על השדה 'מזהה מוצר ' ועל השדה 'תאריך הזמנה ' כדי להוסיף אותם לרשת עיצוב השאילתה.

  8. בשורה מיון של העמודה מזהה מוצר של הרשת, בחר סדר עולה.

  9. בשורה מיון של העמודה תאריך הזמנה של הרשת, בחר סדר יורד.

  10. בעמודה השלישית של הרשת, לחץ באמצעות לחצן העכבר הימני על השורה שדה ולאחר מכן לחץ על שנה גודל תצוגה בתפריט הקיצור.

  11. בתיבת הדו-שיח שינוי גודל תצוגה, הקלד או הדבק את הביטוי הבא:

    Prior Date: (SELECT MAX([Order Date]) FROM [Product Orders] AS [Old Orders] WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date] AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

    ביטוי זה הוא שאילתת המשנה. עבור כל שורה, שאילתת המשנה בוחרת את תאריך ההזמנה העדכני ביותר המאוחר פחות מתאריך ההזמנה שכבר משויך לשורה. שים לב כיצד אתה משתמש במילת המפתח AS כדי ליצור כינוי טבלה, כך שתוכל להשוות בין ערכים בשאילתת המשנה לערכים בשורה הנוכחית של השאילתה הראשית.

  12. בעמודה הרביעית של הרשת, בשורה שדה , הקלד את הביטוי הבא:

    Interval: [Order Date]-[Prior Date]

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

  13. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

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

    2. הערה: מאחר ש'מזהה מוצר' הוא שדה בדיקת מידע, כברירת מחדל, Access מציג את ערכי בדיקת המידע (במקרה זה, את שם המוצר), ולא את מזהי המוצר בפועל. למרות ששינוי זה משנה את הערכים שמופיעים, הוא אינו משנה את סדר המיון.

  14. סגור את מסד הנתונים של Northwind.

לראש הדף

שימוש בשאילתת משנה כקריטריון עבור שדה שאילתה

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

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

  1. פתח את Northwind.accdb ו הפוך את התוכן שלו לזמין.

  2. סגור את טופס הכניסה.

  3. בכרטיסיה יצירה, בקבוצה אחר, לחץ על עיצוב שאילתה.

  4. בכרטיסיה טבלאות , לחץ פעמיים על הזמנותועובדים.

  5. בטבלה Orders, לחץ פעמיים על השדה Employee ID , השדה Order ID והשדות Order Date כדי להוסיף אותם לרשת עיצוב השאילתה. בטבלה עובדים, לחץ פעמיים על השדה תפקיד כדי להוסיף אותו לרשת העיצוב.

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

  7. בתיבה מרחק מתצוגה , הקלד או הדבק את הביטוי הבא:

    IN (SELECT [ID] FROM [Employees] WHERE [Job Title]<>'Sales Representative')

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

  8. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

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

לראש הדף

מילות מפתח נפוצות של SQL שניתן להשתמש בהן עם שאילתת משנה

קיימות כמה מילות מפתח של SQL שניתן להשתמש בהן עם שאילתת משנה:

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

  • כל    השתמש ב- ALL במשפט WHERE כדי לאחזר שורות התואמות את התנאי בהשוואה לכל שורה המוחזרת על-ידי שאילתת המשנה.

    לדוגמה, נניח שאתה מנתח נתוני תלמידים במכללה. התלמידים חייבים לשמור על ממוצעי GPA מינימליים, אשר משתנה מגירסה ראשית לגירסה הראשית. ראשיות וערכות ה- GPAs המינימליות שלהם מאוחסנים בטבלה בשם Majors, ופרטי התלמידים הרלוונטיים מאוחסנים בטבלה הנקראת Student_Records.

    כדי לראות רשימה של סטודנטים ראשיים (ואת יחידות ה- GBA המינימליות שלהם) שעבורן כל תלמיד עם GPA זה חורג מה- GPA המינימלי, באפשרותך להשתמש בשאילתה הבאה:

    SELECT [Major], [Min_GPA] FROM [Majors]WHERE [Min_GPA] < ALL(SELECT [GPA] FROM [Student_Records] WHERE [Student_Records].[Major]=[Majors].[Major]);
  • כל    השתמש ב- ANY במשפט WHERE כדי לאחזר שורות התואמות את התנאי בהשוואה לפחות לאחת מהשורות שהוחזרו על-ידי שאילתת המשנה.

    לדוגמה, נניח שאתה מנתח נתוני תלמידים במכללה. התלמידים חייבים לשמור על ממוצעי GPA מינימליים, אשר משתנה מגירסה ראשית לגירסה הראשית. ראשיות וערכות ה- GPAs המינימליות שלהם מאוחסנים בטבלה בשם Majors, ופרטי התלמידים הרלוונטיים מאוחסנים בטבלה הנקראת Student_Records.

    כדי לראות רשימה של סטודנטים ראשיים (ואת יחידות ה- GBA המינימליות שלהם) שעבורן כל תלמיד עם GPA מינימלי אינו עומד בדרישות ה- GPA המינימליות, באפשרותך להשתמש בשאילתה הבאה:

    SELECT [Major], [Min_GPA] FROM [Majors]WHERE [Min_GPA] > ANY(SELECT [GPA] FROM [Student_Records] WHERE [Student_Records].[Major]=[Majors].[Major]);

    הערה: באפשרותך גם להשתמש במילת המפתח SOME לאותה מטרה; מילת המפתח SOME היא מילה נרדפת עם ANY.

  • EXISTS     השתמש ב- EXISTS במשפט WHERE כדי לציין ש שאילתת משנה צריכה להחזיר שורה אחת לפחות. באפשרותך גם להוסיף קידומת EXISTS עם NOT, כדי לציין שאין להחזיר שאילתת משנה.

    לדוגמה, השאילתה הבאה מחזירה רשימה של מוצרים שנמצאו בסדר קיים אחד לפחות:

    SELECT *FROM [Products]WHERE EXISTS(SELECT * FROM [Order Details] WHERE [Order Details].[Product ID]=[Products].[ID]);

    באמצעות NOT EXISTS, השאילתה מחזירה רשימה של מוצרים שלא נמצאו בסדר קיים אחד לפחות:

    SELECT *FROM [Products]WHERE NOT EXISTS(SELECT * FROM [Order Details] WHERE [Order Details].[Product ID]=[Products].[ID]);
  • ב-    השתמש בפונקציה IN במשפט WHERE כדי לוודא שערך בשורה הנוכחית של השאילתה הראשית הוא חלק מהערכה שהשאילתה משנה מחזירה. באפשרותך גם להתחיל ב- IN עם NOT, כדי לוודא שערך בשורה הנוכחית של השאילתה הראשית אינו חלק מהערכה ששאילתת המשנה מחזירה.

    לדוגמה, השאילתה הבאה מחזירה רשימה של הזמנות (עם תאריכי הזמנות) שעובדו על-ידי עובדים שאינם נציגי מכירות:

    SELECT [Order ID], [Order Date]FROM [Orders]WHERE [Employee ID] IN(SELECT [ID] FROM [Employees] WHERE [Job Title]<>'Sales Representative');

    על-ידי שימוש ב- NOT IN, באפשרותך לכתוב את אותה שאילתה באופן הבא:

    SELECT [Order ID], [Order Date]FROM [Orders]WHERE [Employee ID] NOT IN(SELECT [ID] FROM [Employees] WHERE [Job Title]='Sales Representative');

לראש הדף

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

גלה את יתרונות המנוי, עיין בקורסי הדרכה, למד כיצד לאבטח את המכשיר שלך ועוד.

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.