ݺߣ

ݺߣShare a Scribd company logo
‫מציאת ערכים משתי טבלאות:‬

                                                      ‫ראשית, נאתר עמודת ‪ ID‬המשותפת לשתי הטבלאות.‬
‫נריץ שאילתה על אחת הטבלאות שתייצר עבורנו, לרוב בעזרת ‪ ,SELECT DISTINCT‬טבלה ובה שורות ובהן ה –‬
         ‫‪ ,ID‬בהתאם לתנאי הנדרש, ומהטבלה השנייה, נציג את השורות בעלות אותו ה– ‪ ID‬שבטבלה שייצרנו:‬


‫;'%‪1. (A=)SELECT DISTINCT artistid FROM work WHERE description LIKE '%impressionist‬‬
‫;)‪2. SELECT LastName, FirstName FROM ListofArtists WHERE artistid IN (A‬‬


                                                  ‫7‬                      ‫3‬
                                ‫2.‬                                                               ‫1.‬
‫(7)‬                                               ‫6‬                      ‫5‬
           ‫‪Last‬‬        ‫‪First‬‬
‫(6)‬                                               ‫8‬                      ‫7‬
           ‫‪Last‬‬        ‫‪First‬‬
‫(8)‬        ‫‪Last‬‬        ‫‪First‬‬                      ‫9‬                      ‫6‬
                                                 ‫01‬                      ‫8‬
                                                 ‫11‬
                                                                         ‫‪A‬‬
                                                 ‫21‬



                                                                               ‫הוראות מקוננות.‬

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

‫;‪SELECT name, age FROM table1 WHERE (SELECT MIN(age) FROM table 1) = age‬‬



                                                                                   ‫סידור שורות.‬
                                                       ‫סידור השורות בסדר יורד / עולה לפי שדה מסוים,‬
                                                                      ‫יופיע בדרך כלל לאחר ‪WHERE‬‬
‫}‪ORDER BY col1 {ASC, DESC}, col2 {ASC,DESC‬‬
                               ‫עולה‬   ‫יורד‬
                  ‫‪Default‬‬
‫חיתוך בין טבלאות .‬

                      ‫לא קיימת פעולת חיתוך פרופר, אך נוכל לבצעה באמצעות ‪ WHERE EXISTS‬באופן הבא:‬


‫1‪SELECT * FROM table‬‬
‫2‪WHERE EXISTS (SELECT * FROM table‬‬
‫1‪WHERE table1.col1=table2.col‬‬
‫)2‪AND table1.col2=table2.col‬‬


                                                                              ‫לקיחת נתונים משתי טבלאות:‬
‫‪SELECT lastname, firstname FROM listofartists WHERE artistid IN‬‬
‫;)'%‪(SELECT DISTINCT artistid FROM work WHERE description LIKE '%impressionist‬‬
                                                                                                        ‫חיתוך:‬
‫‪SELECT lastname, firstname FROM listofartists‬‬
‫‪WHERE EXISTS (SELECT * FROM work‬‬
‫;)'%‪WHERE listofartisits.artistid=work.artistid AND work.description LIKE '%impressionist‬‬


                                                                                       ‫ספירת שורות בטבלה :‬

‫‪SELECT COUNT (*) FROM (query / table) AS new_column_name‬‬
                                                                              ‫נתונים מיותר משתי טבלאות :‬

  ‫כאשר אנו עובדים עם טבלאות מרובות אשר ביניהן קיימים קשרים כאלו ואחרים, על מנת לשלוף נתון בהסתמך‬
   ‫על השתייכותו, ואופיו עבור מספר טבלאות, אנו נצטרך למצוא את המפתחות המקשרים בין הטבלאות ולהציב‬
                                              ‫תנאים שיאלצו את הערך המוחזר להיות זה שאנו מחפשים.‬
                                                     ‫ניתן לדמות זאת לחיפוש מסלול במפה באופן הבא:‬
                  ‫1 ‪Table‬‬                        ‫2 ‪Table‬‬                      ‫3 ‪Table‬‬

            ‫‪WID‬‬   ‫‪A‬‬    ‫‪B‬‬   ‫‪CID D‬‬           ‫‪CID‬‬‫‪CID K‬‬   ‫‪T‬‬   ‫‪PID‬‬   ‫‪S‬‬
                                                                        ‫‪PID‬‬    ‫‪J‬‬   ‫‪X‬‬    ‫‪Z‬‬    ‫‪W‬‬




                           ‫נתון מעמודה ‪ X‬ב – 3 ‪ Table‬הוא שמעניין אותנו, ואנו רוצים לדעת מהו ה – ‪ WID‬שלו.‬
‫כמו שמתואר בתרשים, אין גישה ישירה לנתון זה, אך ניתן לבצע "מעבר" בין הטבלאות דרך המפתחות המשותפים‬
                                                        ‫ובלבד שאלו אכן מייצגים את אותו האובייקט.‬

‫)‪WHERE (Table3.PID = Table2.PID‬‬
‫)‪AND (Table2.CID=Table1.CID‬‬
‫איחוד שורות מטבלאות שונות .‬

  ‫על הטבלאות להיות מאותו טיפוס נתונים. במקרה הצורך ניתן להוסיף עמודת‪ TAG‬על מנת לדעת מאיזו טבלה‬
                                ‫)‪(query) UNION (query‬‬                                ‫הגיעה כל שורה.‬




                                                                 ‫הגבלת כמות התוצאות של שאילתה :‬

                                                        ‫מספר השורות עליהן יש לדלג‬

                                   ‫# ‪(query) LIMIT # OFFSET‬‬


           ‫מספר השורות להצגה החל מערך 1+ ‪offset‬‬


                                  ‫אם לא צוין ‪ ,offset‬ההגבלה על מספר השורות תתחיל מהשורה הראשונה.‬




                                                                                             ‫‪. ALIAS‬‬

  ‫נניח ונרצה לבחור ערך מקסימאלי / מינימאלי, לסכום או לבצע מניפולציה על עמודה, שעל מנת לייצרה נדרשנו‬
                                                ‫בשימוש ב )*(‪ ,COUNT‬נוכל להגדיר ‪ ALIAS‬באופן הבא:‬
‫‪(A=) SELECT COUNT(*) AS Alias FROM table GROUP BY column‬‬
                                                  ‫ואז , להתייחס ל – ‪ Alias‬הזה, כאילו כבר היה קיים כך:‬
‫2‪SELECT {MAX,MIN} (Alias) FROM (A) AS Alias‬‬
                                                         ‫ניתן לפנות לטבלה שנוצרה כך: ‪Alias2.column‬‬

More Related Content

MySQL - מילון השאילתא

  • 1. ‫מציאת ערכים משתי טבלאות:‬ ‫ראשית, נאתר עמודת ‪ ID‬המשותפת לשתי הטבלאות.‬ ‫נריץ שאילתה על אחת הטבלאות שתייצר עבורנו, לרוב בעזרת ‪ ,SELECT DISTINCT‬טבלה ובה שורות ובהן ה –‬ ‫‪ ,ID‬בהתאם לתנאי הנדרש, ומהטבלה השנייה, נציג את השורות בעלות אותו ה– ‪ ID‬שבטבלה שייצרנו:‬ ‫;'%‪1. (A=)SELECT DISTINCT artistid FROM work WHERE description LIKE '%impressionist‬‬ ‫;)‪2. SELECT LastName, FirstName FROM ListofArtists WHERE artistid IN (A‬‬ ‫7‬ ‫3‬ ‫2.‬ ‫1.‬ ‫(7)‬ ‫6‬ ‫5‬ ‫‪Last‬‬ ‫‪First‬‬ ‫(6)‬ ‫8‬ ‫7‬ ‫‪Last‬‬ ‫‪First‬‬ ‫(8)‬ ‫‪Last‬‬ ‫‪First‬‬ ‫9‬ ‫6‬ ‫01‬ ‫8‬ ‫11‬ ‫‪A‬‬ ‫21‬ ‫הוראות מקוננות.‬ ‫כאשר יש צורך בהפעלת בחירה מרובה על אותה הטבלה, לדוגמה, באם רצוננו למצוא לא רק את הערך המינימאלי‬ ‫בעמודה מסוימת, אלא גם את כל השורה בה מופיע ערך זה, נוכל לעשות זאת באופן הבא:‬ ‫;‪SELECT name, age FROM table1 WHERE (SELECT MIN(age) FROM table 1) = age‬‬ ‫סידור שורות.‬ ‫סידור השורות בסדר יורד / עולה לפי שדה מסוים,‬ ‫יופיע בדרך כלל לאחר ‪WHERE‬‬ ‫}‪ORDER BY col1 {ASC, DESC}, col2 {ASC,DESC‬‬ ‫עולה‬ ‫יורד‬ ‫‪Default‬‬
  • 2. ‫חיתוך בין טבלאות .‬ ‫לא קיימת פעולת חיתוך פרופר, אך נוכל לבצעה באמצעות ‪ WHERE EXISTS‬באופן הבא:‬ ‫1‪SELECT * FROM table‬‬ ‫2‪WHERE EXISTS (SELECT * FROM table‬‬ ‫1‪WHERE table1.col1=table2.col‬‬ ‫)2‪AND table1.col2=table2.col‬‬ ‫לקיחת נתונים משתי טבלאות:‬ ‫‪SELECT lastname, firstname FROM listofartists WHERE artistid IN‬‬ ‫;)'%‪(SELECT DISTINCT artistid FROM work WHERE description LIKE '%impressionist‬‬ ‫חיתוך:‬ ‫‪SELECT lastname, firstname FROM listofartists‬‬ ‫‪WHERE EXISTS (SELECT * FROM work‬‬ ‫;)'%‪WHERE listofartisits.artistid=work.artistid AND work.description LIKE '%impressionist‬‬ ‫ספירת שורות בטבלה :‬ ‫‪SELECT COUNT (*) FROM (query / table) AS new_column_name‬‬ ‫נתונים מיותר משתי טבלאות :‬ ‫כאשר אנו עובדים עם טבלאות מרובות אשר ביניהן קיימים קשרים כאלו ואחרים, על מנת לשלוף נתון בהסתמך‬ ‫על השתייכותו, ואופיו עבור מספר טבלאות, אנו נצטרך למצוא את המפתחות המקשרים בין הטבלאות ולהציב‬ ‫תנאים שיאלצו את הערך המוחזר להיות זה שאנו מחפשים.‬ ‫ניתן לדמות זאת לחיפוש מסלול במפה באופן הבא:‬ ‫1 ‪Table‬‬ ‫2 ‪Table‬‬ ‫3 ‪Table‬‬ ‫‪WID‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫‪CID D‬‬ ‫‪CID‬‬‫‪CID K‬‬ ‫‪T‬‬ ‫‪PID‬‬ ‫‪S‬‬ ‫‪PID‬‬ ‫‪J‬‬ ‫‪X‬‬ ‫‪Z‬‬ ‫‪W‬‬ ‫נתון מעמודה ‪ X‬ב – 3 ‪ Table‬הוא שמעניין אותנו, ואנו רוצים לדעת מהו ה – ‪ WID‬שלו.‬ ‫כמו שמתואר בתרשים, אין גישה ישירה לנתון זה, אך ניתן לבצע "מעבר" בין הטבלאות דרך המפתחות המשותפים‬ ‫ובלבד שאלו אכן מייצגים את אותו האובייקט.‬ ‫)‪WHERE (Table3.PID = Table2.PID‬‬ ‫)‪AND (Table2.CID=Table1.CID‬‬
  • 3. ‫איחוד שורות מטבלאות שונות .‬ ‫על הטבלאות להיות מאותו טיפוס נתונים. במקרה הצורך ניתן להוסיף עמודת‪ TAG‬על מנת לדעת מאיזו טבלה‬ ‫)‪(query) UNION (query‬‬ ‫הגיעה כל שורה.‬ ‫הגבלת כמות התוצאות של שאילתה :‬ ‫מספר השורות עליהן יש לדלג‬ ‫# ‪(query) LIMIT # OFFSET‬‬ ‫מספר השורות להצגה החל מערך 1+ ‪offset‬‬ ‫אם לא צוין ‪ ,offset‬ההגבלה על מספר השורות תתחיל מהשורה הראשונה.‬ ‫‪. ALIAS‬‬ ‫נניח ונרצה לבחור ערך מקסימאלי / מינימאלי, לסכום או לבצע מניפולציה על עמודה, שעל מנת לייצרה נדרשנו‬ ‫בשימוש ב )*(‪ ,COUNT‬נוכל להגדיר ‪ ALIAS‬באופן הבא:‬ ‫‪(A=) SELECT COUNT(*) AS Alias FROM table GROUP BY column‬‬ ‫ואז , להתייחס ל – ‪ Alias‬הזה, כאילו כבר היה קיים כך:‬ ‫2‪SELECT {MAX,MIN} (Alias) FROM (A) AS Alias‬‬ ‫ניתן לפנות לטבלה שנוצרה כך: ‪Alias2.column‬‬