נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

לחיצה חוזרת ונשנית על המקש Tab תעביר אתכם בין הקישורים והאזורים השונים בעמוד.

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

סינון התוצאות באמצעות WHERE

מחבר:
בתאריך:

סינון בסיסי באמצעות WHERE ואופרטורים

 

להורדת קובץ ה-sql, שמלווה את המדריך:

להורדה

 

WHERE משמש לסינון תוצאות שמגיעות מבסיס הנתונים. נראה את הדוגמה הבאה:

 

SELECT * 
FROM `workers` 
WHERE `workers_id` = 5

 

והתוצאה היא הצגת השורה שמספרה 5 בטבלת הנתונים.

workers_comment workers_date_added workers_city workers_phone2 workers_phone1 workers_name workers_id
NULL 2011-06-08 Jerusalem NULL 02-2000002 Asher 5

כדי לקבל את כל השורות שאינן 5, נשתמש בשאילה הבאה, עם האופרטור !=:

SELECT * 
FROM `workers` 
WHERE `workers_id` != 5

והתוצאה היא כל השורות בטבלה שה-workers_id שלהם אינו 5.

 

כדי לקבל את כל השורות שמספרן פחות מ-5 או שווה ל-5  , נשתמש בשאילה הבאה שמשתמש באופרטור <=:

SELECT *
FROM `workers`
WHERE `workers_id` <= 5

וזו התוצאה:

Workers_id Worker_name workers_phone1 workers_phone2 workers_city workers_date_added workers_comment
1 Moshe 09-9888887 NULL Hakrayot 2011-06-07 NULL
2 Yechezkel 04-4888887 NULL Ramat Hasharon 2011-06-07 NULL
3 Yirmiyahu 03-3333337 NULL Bat Yam 2011-06-07 NULL
4 Gershon 0544-444333 NULL Beer-sheva 2011-06-08 NULL
5 Asher 02-2000002 NULL Jerusalem 2011-06-08 NULL

 

שימוש באופרטורים כמו = ו->  ישמש אותנו לסינון התוצאות. הטבלה הבאה מסכמת את הנושא:

האופרטור הסבר
id = 5 שורה שמספרה 5
id != 5 כל התוצאות שאינן 5
id < 5 התוצאות הקטנות מ-5 (1 עד 4)
id <= 5 התוצאות הקטנות והשוות ל-5 (1 עד 5)
id > 5 התוצאות הגדולות מ-5
id >= 5 התוצאות הגדולות או השוות ל-5

 

כפי שניתן לסנן תוצאות מספריות, ניתן לסנן תוצאות לפי מחרוזות. לדוגמה:

SELECT *
 FROM `workers`
WHERE `workers_name` = ' Yechezkel '

והתוצאה היא שנבחרה השורה מבסיס הנתונים שמכילה את העובד ששמו יחזקאל:

workers_comment workers_date_added workers_city workers_phone2 workers_phone1 workers_name workers_id
NULL 2011-06-07 Ramat Hasharon NULL 04-4888887 Yechezkel 2

 

סינון בסיסי באמצעות WHERE, OR  ו-AND

ניתן לסנן להתאמה לאחת משתי אפשרויות, לדוגמה, השאילתה הבאה משתמשת ב-OR כדי להחזיר את השורה שבה שם העובד הוא יחזקאל ואת השורה שבה שם העובד הוא משה.

SELECT *
FROM `workers`
WHERE `workers_name` = 'Moshe' OR `workers_name` = 'Yechezkel'

workers_comment workers_date_added workers_city workers_phone2 workers_phone1 workers_name workers_id
NULL 2011-06-07 Hakrayot NULL 09-9888887 Moshe 1
NULL 2011-06-07 Ramat Hasharon NULL 04-4888887 Yechezkel 2

 

שימוש ב-AND , יאפשר לנו לסנן תוצאות לפי שני קריטריונים או יותר. לדוגמה, אם נרצה למצוא את העובד ששמו ירמיהו שגם גר בבת-ים, נכתוב את השאילתה הבאה:

SELECT *
 FROM `workers`
WHERE `workers_name` = 'Yirmiyahu' AND `workers_city` = 'Bat Yam'

והתוצאה היא:

workers_comment workers_date_added workers_city workers_phone2 workers_phone1 workers_name workers_id
NULL 2011-06-07 Bat Yam NULL 03-3333337 Yirmiyahu 3

 

 

שילוב של BETWEEN ו-AND מאפשר לנו לסנן טווח של תוצאות. לדוגמה, השאילתה הבאה שולפת את התוצאות שבשורות 2 עד 4.

SELECT *
FROM `workers`
WHERE `workers_id` BETWEEN 2 AND 4

והתוצאה בהתאם היא הבאה:

Workers_id Worker_name workers_phone1 workers_phone2 workers_city workers_date_added workers_comment
2 Yechezkel 04-4888887 NULL Ramat Hasharon 2011-06-07 NULL
3 Yirmiyahu 03-3333337 NULL Bat Yam 2011-06-07 NULL
4 Gershon 0544-444333 NULL Beer-sheva 2011-06-08 NULL

 

שימוש ב-BETWEEN  נותן את אותה תוצאה כמו LIMIT , כפי שלמדנו במדריך קודם.

 

סינון מתקדם באמצעות WHERE, OR  ו-AND

כדי ליצור תנאים מורכבים נשתמש בסוגריים. בשאילתה הבאה, נבקש את כל השדות מטבלת workers שמקיימים את התנאים הבאים: מספר העובד (id) הוא בין 1 ל-10, ושם העובד הוא גרשון או אליעזר. זה נכתב בדיוק כמו שאומרים את זה:

SELECT *
FROM `workers`
WHERE (`workers_id` BETWEEN 1 AND 10)
AND (`workers_name` = 'Gershon' OR `workers_name` = 'Eliezer')

ומביא את התוצאות הרצויות:

Workers_id Worker_name workers_phone1 workers_phone2 workers_city workers_date_added workers_comment
4 Gershon 0544-444333 NULL Beer-sheva 2011-06-08 NULL
9 Eliezer 03-7333335 NULL Bat Yam 2011-06-09 NULL

 

סינון מתקדם באמצעות IN()  ו-NOT IN()

הבעיה עם סינון מתקדם באמצעות OR ו-AND, שלעתים השאילתה הופכת מורכבת מדי. לדוגמה, אם אנחנו רוצים את האנשים שחיים בבאר שבע, בבת ים ובירושלים, אנחנו עשויים לנסח שאילתה כזו:

SELECT *
FROM `workers`
WHERE `workers_city` = 'Bat Yam'
OR `workers_city` = 'Beer-sheva'
OR `workers_city` = 'Ramat Hasharon'

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

SELECT *
FROM `workers`
WHERE `workers_city`
IN ('Bat Yam', 'Beer-sheva', 'Ramat Hasharon')

אחרי IN, ציינו בסוגריים, את הסט שמתוכו צריך לשלוף את התוצאות.

אם אנחנו רוצים את כל העובדים שאינם מבת-ים, באר-שבע או רמת-השרון, נעשה זאת באמצעות NOT IN. כך נראית השאילתה, שמספקת את סט התוצאות המשלים:

SELECT *
FROM `workers`
WHERE `workers_city`
NOT IN ('Bat Yam', 'Beer-sheva', 'Ramat Hasharon')

 

סינון באמצעות IN כשהסדר חשוב

כשרוצים לבחור את סדר שליפת התוצאות ממסד הנתונים, צריך להשתמש גם ב- ORDER BY FIELD כדי לשמור על הסדר שבו הנתונים נשלפים ממסד הנתונים.
לדוגמה:

SELECT *
  FROM `workers`
  WHERE `workers_id`
  IN (5,3,7,4)
  ORDER BY FIELD(`workers_id`,5,3,7,4)

 

במדריך הבא אסביר כיצד לקבוע את כיוון המיון של התוצאות, מהגבוה לנמוך והפוך.

לכל מדריכי ה- mySQL

 

הוסף תגובה חדשה

 

= 6 + 3

תמונת המגיב

שגיב בתאריך: 25.09.2015

שלום, קודם כל אלו מדריכים מעולים. תודה רבה :)
רציתי לדעת בבקשה לגבי ההבדל בין הLIMIT ל BETWEEN . מתי להשתמש בכל אחד מהן?
שבת שלום.