שלום, יש לי טבלה עם שדה של תאריך. אני רוצה לבצע את השאילתה הבאה: בחר את 3 השורות עם התאריך העתידי הקרוב ביותר לתאריך עכשיו. אם אין 3 עתידיים, בחר את 3 האחרונים. איך עושים זאת ב-SQL? אני צריך את זה גם ל ACCESS וגם ל MYSQL. תודה, ושבת שלום
את יכולה לבצע חיסור בין התאריך שנשלח לשאילתא לבין שדה התאריך שיש לך בטבלה למיין את התוצאה בסדר יורד מה שאומר שהרשומה עם השדה העתידי ביותר תהיה למעלה ולקחת את ה3 העליונים מה שלא ברור לי מה הכוונה אם אין 3 עתידיים אז לוקחים 3 אחרונים ?
א. באופן וודאי איו 2 רשומות עם אותו תאריך. ב. במידה ויש פחות מ-3 רשומות עם תאריך עתידי בוחרים את ה- 3 האחרונות מבחינת תאריך, למשל נניח שיש רשומה לשלשום, אתמול, היום, ומחר, אז בוחרים אתמול, היום ומחר. תודה
נעשה את זה ב-2 שלבים: 1. ניצור טבלה עם התאריך האחרון של היום+3 ימים. 2. מתוך הטבלה הראשונה, נקח את ה-3 האחרונים. נכון? select top 3 * from ( select * from A where A.time < sysdate+3 ) order by time desc
1. 3 השורות עם התאריך העתידי הקרוב ביותר לתאריך עכשיו: Select Top 3 עם תנאי שהם גדולים מהתאריך הנוכחי, והמיון יורד. 2. 3 האחרונים: Select Top 3 עם תנאי שהם קטנים מהנוכחי, והמיון עולה. 3. לשתי השליפות הנ"ל בצע Union, ושלוף מהסט המאוחד את שלושת הראשונים בסדר יורד.
תודה על ההצעה, עכשיו נותרתי עם 3 הרשומות הרצויות אבל בסדר הפוך. נניח של לי 5 תאריכים מ- 1 עד 5 כאשר היום הוא יום 4. אני רוצה לקבל 3, 4, 5 ולא 5, 4, 3. האם יש דרך לקבל את 3 הראשונים ואז לבצע להם היפוך סדר בלי להוסיף עוד SELECT?