fbpx

פקודת ORDER BY בשפת ה SQL מאפשרת לבצע מיונים בהתאם לצריכנו. במדריך SQL זה נראה כיצד ניתן ליישם את מיונים אלו בצורות שונות (מיון בסדר עולה, מיון בסדר עולה, תתי מיונים)

SELECT  >    מה אנחנו רוצים להציג   

FROM   > מאיזו טבלה

WHERE  >   על פי איזה תנאי  

ORDER BY  >  באיזו צורה הנתונים ימויינו

מיון ראשי

משפט ORDER BY מאפשר לנו למיין את הנתונים שקיבלנו על סמך עמודה נבחרת :

 

ORDER BY שם_עמודה

 

כאשר נרצה להציג את העובדים מהטבלה ממויינים לפי השכר שלהם (מהנמוך לגבוה) נכתוב :

 

ORDER BY salary 

 

כאשר נרצה לשנות את סדר המיון כך שיציג את העובדים מהטבלה ממויינים לפי השכר שלהם מהגבוה לנמוך (Descending) אנו נשתמש במילה השמורה DESC :

 

ORDER BY salary DESC 

מיון משני

ניתן לבצע מיון על סמך יותר מעמודה אחת. כדי לעשות זאת, נכתוב את כל העמודות הרצויות במשפט ORDER BY כאשר פסיק (,) מפריד ביניהן.

לדוגמא, מיון ראשי אשר יתבצע על עמודת מספר מחלקה ומיון משני (שיתבצע בכל מחלקה) על עמודת השכר :

 

ORDER BY department_id, salary  

 

כמו כן ניתן לשלב את פקודת ה DESC באיזה אופן שנרצה.

לדוגמא, מיון ראשי אשר יתבצע על עמודת מספר מחלקה בסדר יורד ומיון משני (שיתבצע בכל מחלקה) על עמודת השכר בסדר עולה :

ORDER BY department_id DESC, salary  

 

!         בלי שנגדיר בצורה מפורשת המיון הדיפולטיבי על עמודה נעשה בסדר עולה (Ascending). ניתן להשתמש במילה השמורה ASC כדי להגדיר מפורשות כי המיון על העמודה יעשה בסדר עולה:

 

ORDER BY department_id ASC

תחזיר את אותה תוצאה כמו:

ORDER BY department_id

 

התאמות ל SQL Server

ב SQL Server קיימת יכולת הנקראת TOP-N, באמצעות יכולת זו ניתן להציג את כל N הרשומות אשר עונות על סדר מסויים – לדוגמא, 3 העובדים עם השכר הגבוה ביותר, 5 המוצרים הזולים ביותר, 4 הלקוחות אשר האחרונים אשר הצטרפו לחברה ועוד

הסינטקס לכתיבת הפקודה נראה כך

SELECT TOP n  …

FROM table_name

ORDER BY column

לדוגמא

3 העובדים עם השכר הגבוה ביותר

SELECT TOP 3 last_name , salary

FROM employees

ORDER BY salary DESC

5 המוצרים הזולים ביותר

SELECT TOP 5 product_name , unit_price

FROM products

ORDER BY unit_price

4 הלקוחות האחרונים אשר הצטרפו לחברה

SELECT TOP 4 last_name , first_name , join_date

FROM customers

ORDER BY join_date DESC