תוֹכֶן
שאילתות משנה הן שאילתות מקוננות בתוך שאילתה אחרת. הם מאפשרים לך להפריד חלק מהמשפט ולספק חלופה קריא יותר לפעולות שעשויות לחייב מצטרפים ואיגודים מורכבים. SubQeries ב- MySQL יכול להחזיר ערך, שורה, עמודה או טבלת נתונים.
השתמש subqueries כדי ליצור משפטים קריא יותר וקומפקטי (ThinkStock Images / Comstock / Getty Images)
התחביר
התחביר הבסיסי של שאילתת משנה הוא כדלקמן:
בחר * מתוך טבלה 1 WHERE columnA = (בחר עמודה מתוך טבלה 2) עבור
שאילתות המשנה צריכות לכלול הצהרת "SELECT", "INSERT", "UPDATE", "DELETE", "Set" או "DO", ולא ניתן לשנות את הטבלה ולהשתמש בה במסגרת שאילתת המשנה באותו זמן. Subqueries משמשים בדרך כלל בצד ימין של סעיף WHERE, אשר יכול להכיל את כל ההשוואה ואת אופרטורים לוגיים, כגון = (שווה), <> (שונה), <= (פחות או שווה),> = או "BETWEEN" (בין שני ערכים), "לא", "ו" או "או". ניתן גם להשתמש במילות המפתח "DISTINCT", "GROUP BY", "ORDER BY" ו- "LIMIT" ואפילו בשילוב עם הצהרות "JOIN". מלבד מגבלות מפורטות, יש מגבלות מעטות בעת כתיבת subqueries ב MySQL.
אין אפילו הגבלה על מספר subqueries שבוצעו בתוך משפט. ניתן למצוא מידע נוסף אודות subqueries במדריך למשתמש של MySQL (עיין בסעיף "משאבים").
דוגמה
נניח שיש לך שני שולחנות: אחד עם השם הפרטי ושם המשפחה, כתובת מיקוד של חברי לרשימת התפוצה, ואחד עם ערים, מדינות מיקוד. כדי למצוא את שמות החברים המתגוררים בברזיליה, ניתן להשתמש במספר משפטים "נבחרים". הראשון יבקש את CEPs של ברזיליה:
בחר מתוך קודים כאשר המדינה = "BRASILIA" עבור
לאחר מכן השתמש "בחר" עבור כל מיקוד נמצא:
SELECT שם, שם משפחה FROM כתובות WHERE cep = [codcep] GO
שיטה זו היא זמן רב וקל לעשות טעויות. קל לאבד מיקוד, במיוחד אם יש יותר מדי מהם. דרך קלה יותר להשלים משימה זו היא להשתמש במשפט הראשון כתת שאילתה בתוך השני:
SELECT שם, שם משפחה FROM כתובות WHERE cep = (בחר CEP מקודים WHERE = "BRASILIA") GO
שאילתה זו תציג את כל חברי רשימת התפוצה שלך שגרים בברזיליה.