מדריך SQL זה מתמקד בפקודותת AND ו – OR אשר מאפשרות שילוב תנאים. מדריך זה הינו חלק מרשימת פוסטים הנוגעים לפקודת ה WHERE ב SQL SERVER. כדי להגיע לפוסטים הנוספים ניתן להעזר בקישורים הבאים :

האופרטורים AND וOR

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

שם העובד

שכר

מספר מחלקה

חיה

10000

90

דוד

9000

80

יוסי

8000

70

אופיר

7000

70

עמית

5000

70

רם

4000

40

v AND מציין כי כל התנאים חייבים להתקיים.

העובדים אשר שכרם גבוה מ– 6000 וגם מספר מחלקתם 70.

העובדים אשר עונים על שני תנאים אלו הם: אופיר ויוסי (2 עובדים סה"כ).

v OR מציין כי לפחות אחד מהתנאים חייב להתקיים.

העובדים אשר שכרם גבוה מ– 6000 או מספר מחלקתם 70 :

o אצל רם אף אחד מהתנאים לא מתקיים.

o אצל עמית מספר המחלקה הוא 70 – תנאי אחד מתקיים.

o אצל יוסי ואופיר שכרם גבוה מ– 6000 ומספר מחלקתם 70 – שני התנאים מתקיימים.

o אצל חיה ודוד השכר גבוה מ– 6000 – תנאי אחד מתקיים.

 5 עובדים עונים לפחות על תנאי אחד.

! משום שאופרטור OR מתקיים גם כאשר רק חלק מהתנאים מתקיימים, אופרטור OR מחזיר יותר ערכים.

העובדים אשר שכרם גבוה מ– 6000 וגם מספר מחלקתם 70 :

WHERE salary > 6000 

AND

      Department_id = 70

העובדים אשר שכרם גבוה מ– 6000 או מספר מחלקתם 70 :

WHERE salary > 6000 

OR

      Department_id = 70

! משפט WHERE מופיע פעם אחת בלבד, לאחר פקודת OR או AND אנו נכתוב את התנאי הנוסף ללא ציון נוסף של פקודת WHERE.

סדר קדימויות בין תנאים

פקודת AND קודמת לפקודת OR (כשם שפעולת הכפל קודמת לפעולת החיבור )

WHERE    Job_Title = ‘DBA’  

OR

         Job_Title = ‘Manager’ AND Salary > 8000

במשפט WHERE זה בחרנו להציג את אלו אשר :

(תנאי ראשון) התפקיד שלהם הוא DBA.

או

(תנאי שני) התפקיד שלהם הוא Manager וגם הם מרוויחים מעל 8000.

שינוי סדר הקדימויות בין תנאים

כאשר נרצה לשנות את סדר הקדימויות בין OR לAND נשתמש בסוגריים (כשם שסוגריים משנים את סדר הקדימויות בין חיבור לכפל).

WHERE (Job_Title = ‘DBA’ OR Salary > 8000)

AND 

       Last_name LIKE ‘%a%’

במשפט WHERE זה בחרנו להציג את אלו אשר :

(תנאי ראשון) התפקיד שלהם הוא DBA או השכר שלהם גבוה מ 8000.

וגם

(תנאי שני) שם המשפחה שלהם מכיל את האות a.

נערך ע”י אלעד פלג