Upload
-
View
1.384
Download
0
Embed Size (px)
DESCRIPTION
המשך סיכום בנושא שאילתות
Citation preview
: מציאת ערכים משתי טבלאות
. המשותפת לשתי הטבלאות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
. חיתוך בין טבלאות
: באופן הבא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
. איחוד שורות מטבלאות שונות
על מנת לדעת מאיזו טבלה 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: ניתן לפנות לטבלה שנוצרה כך