3
מציאת ערכים משתי טבלאות: ראשית, נאתר עמודת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 ); 1 . 2 . ( 7 ) ( 6 ) ( 8 ) A הוראות מקוננות. כאשר יש צורך בהפעלת בחירה מרובה על אותה הטבלה, לדוגמה, באם רצוננו למצוא לא רק את הערך המינימאלי בעמודה מסוימת, אלא גם את כל השורה בה מופיע ערך זה, נוכל לעשות זאת באופן הבא: SELECT name, age FROM table1 WHERE (SELECT MIN(age) FROM table 1) = age; סידור שורות. סידור השורות בסדר יורד/ עולה לפי שדה מסוים, יופיע בדרך כלל לאחרWHERE ORDER BY col1 {ASC, DESC}, col2 {ASC,DESC} עולה יורדDefault 3 5 7 6 8 7 6 8 9 10 11 12 First First First Last Last Last

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

  • Upload
    -

  • View
    1.384

  • Download
    0

Embed Size (px)

DESCRIPTION

המשך סיכום בנושא שאילתות

Citation preview

Page 1: MySQL - מילון השאילתא

: מציאת ערכים משתי טבלאות

. המשותפת לשתי הטבלאות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);

1 .2 .

(7)

(6)

(8)

A

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

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

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

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

. סידור שורות, עולה לפי שדה מסוים/ סידור השורות בסדר יורד

WHERE יופיע בדרך כלל לאחר

ORDER BY col1 {ASC, DESC}, col2 {ASC,DESC}

יורד עולה

Default

3

5

7

6

8

7

6

8

9

10

11

12

First

First

First

Last

Last

Last

Page 2: MySQL - מילון השאילתא

. חיתוך בין טבלאות

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

SELECT * FROM table1

WHERE EXISTS (SELECT * FROM table2

WHERE table1.col1=table2.col1

AND table1.col2=table2.col2)

: לקיחת נתונים משתי טבלאות

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

: נתונים מיותר משתי טבלאות

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

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

. תנאים שיאלצו את הערך המוחזר להיות זה שאנו מחפשים

: ניתן לדמות זאת לחיפוש מסלול במפה באופן הבא

Table 1 Table 2 Table 3

CID

. שלוWID –ואנו רוצים לדעת מהו ה , הוא שמעניין אותנוTable 3 – ב Xנתון מעמודה

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

. ובלבד שאלו אכן מייצגים את אותו האובייקט

WHERE (Table3.PID = Table2.PID)

AND (Table2.CID=Table1.CID)

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

Page 3: MySQL - מילון השאילתא

. איחוד שורות מטבלאות שונות

על מנת לדעת מאיזו טבלה TAGבמקרה הצורך ניתן להוסיף עמודת . על הטבלאות להיות מאותו טיפוס נתונים

UNION (query) (query). הגיעה כל שורה

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

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

(query) LIMIT # OFFSET #

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

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

ALIAS .

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

: באופן הבאALIASנוכל להגדיר , (*)COUNTבשימוש ב

(A=) SELECT COUNT(*) AS Alias FROM table GROUP BY column

: כאילו כבר היה קיים כך, הזהAlias –להתייחס ל , ואז

SELECT {MAX,MIN} (Alias) FROM (A) AS Alias2

Alias2.column: ניתן לפנות לטבלה שנוצרה כך