Transcript
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: ניתן לפנות לטבלה שנוצרה כך


Recommended