520
צפיות
צפיות
6
תשובות
תשובות
סידור של רשומות בלוח מודעות
שלום,
אני בונה לוח מודעות עם 3 סוגי מודעות (1,2,3) כאשר בכל תאריך אני רוצה לסדר את המודעות לפי הסוג שלהן ואחר כך לפי התאריך שבו נכנסו.
כלומר שאני מציג אותן אז כל המודעות של היום יסודרו לפי הסוג שלהן ואחר כך התאריך שבהן נכנסו ומודעות מתאריך ה-20/11/05 יסודרו באותה צורה.
איך אני עושה את זה?
Select
case when Convert(varchar,UpdateDate,103)=Convert(varchar,getdate(),103) then 1 else 2 end as "AdOrder",
AdType,UpdateDate,city
from Table
ORDER BY AdOrder,AdType,UpdateDate desc
6 תשובות
ב order by שים קודם תאריך
אם הבנתי נכון את השאלה (לא בטוח) אתה צריך לשנות את סדר ה order by
אם המיון הראשוני זה תאריך, אז תרשום קודם את התאריך (בסדר יורד)
המיון המשני זה סוג, תרשום אחריו את הסוג
(לא הבנתי מה זה adOrder)
ואז תקבל קודם את אלו של היום ממוינים לפי סוג
אחר כך את אלו של אתמול ממוינים לפי סוג…
לא לזה התכוונתי
נניח יש לי מודעות ב-5 תאריכים שונים ובכל תאריך יש לי כמה סוגי מודעות (1-3).
אני רוצה להציג את המודעות ככה שבכל תאריך יוצגו המודעות קודם כל לפי הסוג שלהן ואחר כך לפי תאריך ההוספה שלהן.
כמו שקיים בלוחות באינטרנט (יד שניה, הומלס וכו')
מיין קודם לפי יום, אחר כך לפי סוג..
אם הבנתי נכון הבעיה שלך שממינים לפי תאריך הוא ממין לפי שניות ולא לפי ימים, מה שאת צריכה זה למיין מיון ראשוני לפי ימים, אחר כך לפי נושאים ואחר כך בתוך כל יום, התשובה בהמשך מניחה שזו השאלה:
תלוי באיזה DB את עובדת אבל בדרך כלל מקובל לייצג את התאריך כשבר כשהחלק שמימין לנקודה העשרונית מבטא זמן מאז 24:00 והחלק השלם מבטא ימים מאז מתישהוא (את לא רואה את זה, אבל זה עובד ככה בדרך כלל)
הרעיון הוא שתמירי את התאריך למספר שלם (תחתכי את הנקודה העשרונית) ותעשי לפי זה את המיון הראשוני, מיון משני לפי נושא, ומיון שלישי לפי התאריך הרגיל או לפי החלק העשרוני (MOD 1)
מכיון שהתאריך בכל מקרה שמור כמספר העלות של ההמרה היא אפסית.
הסינטקס המדויק של ההמרות תלוי ב DB שאת עובדת עליו
אני עובד עם MS-SQL
מה הסינטקס שמתאים אליו?
אז אפשר להשתמש ב datePart
ב ms-sql כדי לקבוע מה הערך של חלק מסויים בתאריך. פרטים ב BOL.
ככה
SELECT CAST(CAST([datea] AS FLOAT) AS INT) dayis, (CAST([datea] AS FLOAT)- CAST(CAST([datea] AS FLOAT) AS INT)) timeInDay
FROM table
datea תאריך
ואז במיון ממינים לפי dayie, אחר כך לפי סוג, ואחר כך לפי timeInDay
ההמרה הכפולה (מתאריך שהוא שבר לשבר ואז לINT) היא כדי שהוא לא יעגל את השברים אלא יחתוך אותם.
זה נראה בזבזני בהיסטריה אבל מכיון שתאריך נשמר למעשה במערכת כשני משתנים של INT למעשה מה שהוא עושה זה להסתכל על המשתנה העליון או על התחתון, בכן אופן, בבדיקת היעילות של השאילתא החלק של ההמרות תמיד תופס 0.00000 זמן.