סינון התוצאות באמצעות 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 |
סינון תאים ריקים
ניתן לסמן תאים עם ערכים חסרים בכמה אופנים. שתי דרכים נפוצות במיוחד היא לסמן ערכים ריקים או חסרים באמצעות NULL או באמצעות מחרוזת ריקה.
כדי לסנן תאים שערכם NULL נשתמש בתנאי IS NULL. לדוגמה:
SELECT *
FROM workers
WHERE workers_phone2 IS NULL;
וליהפך, כדי לסנן תאים שאינם NULL נשתמש בתנאי IS NOT NULL. לדוגמה:
SELECT *
FROM workers
WHERE workers_phone2 IS NOT NULL;
כדי לסנן תאים המכילים מחרוזות ריקות נבדוק האם ערך התא הוא מחרוזת ריקה:
SELECT *
FROM workers
WHERE workers_phone2 = "";
להיפך, כדי לסנן תאים שאינם ריקים:
SELECT *
FROM workers
WHERE workers_phone2 != "";
העובדה שניתן לסמן ערכים ריקים באמצעות מחרוזת ריקה או NULL מציבה לנו בעיה באיזה אפשרות להשתמש כדי להיות בטוחים שהצלחנו בבחירת תא ריק. השימוש באופרטור > פותרת את הבעיה:
SELECT *
FROM workers
WHERE workers_phone2 > "";
סינון בסיסי באמצעות 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)
במדריך הבא אסביר כיצד לקבוע את כיוון המיון של התוצאות, מהגבוה לנמוך והפוך.
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.