שלח תשובה

זירת השאלות

312
צפיות
6
תשובות

סידור של רשומות בלוח מודעות

,‏ 24 בנובמבר, 2005

שלום,
אני בונה לוח מודעות עם 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 תשובות

  1. gilad123 הגיב:

    ב order by שים קודם תאריך
    אם הבנתי נכון את השאלה (לא בטוח) אתה צריך לשנות את סדר ה order by
    אם המיון הראשוני זה תאריך, אז תרשום קודם את התאריך (בסדר יורד)
    המיון המשני זה סוג, תרשום אחריו את הסוג

    (לא הבנתי מה זה adOrder)

    ואז תקבל קודם את אלו של היום ממוינים לפי סוג
    אחר כך את אלו של אתמול ממוינים לפי סוג…

  2. tal25 הגיב:

    לא לזה התכוונתי
    נניח יש לי מודעות ב-5 תאריכים שונים ובכל תאריך יש לי כמה סוגי מודעות (1-3).
    אני רוצה להציג את המודעות ככה שבכל תאריך יוצגו המודעות קודם כל לפי הסוג שלהן ואחר כך לפי תאריך ההוספה שלהן.

    כמו שקיים בלוחות באינטרנט (יד שניה, הומלס וכו’)

  3. gilad123 הגיב:

    מיין קודם לפי יום, אחר כך לפי סוג..
    אם הבנתי נכון הבעיה שלך שממינים לפי תאריך הוא ממין לפי שניות ולא לפי ימים, מה שאת צריכה זה למיין מיון ראשוני  לפי ימים, אחר כך לפי נושאים ואחר כך בתוך כל יום, התשובה בהמשך מניחה שזו השאלה:

    תלוי באיזה DB את עובדת אבל בדרך כלל מקובל לייצג את התאריך כשבר כשהחלק שמימין לנקודה העשרונית מבטא זמן מאז 24:00 והחלק השלם מבטא ימים מאז מתישהוא (את לא רואה את זה, אבל זה עובד ככה בדרך כלל)
    הרעיון הוא שתמירי את התאריך למספר שלם (תחתכי את הנקודה העשרונית) ותעשי לפי זה את המיון הראשוני, מיון משני לפי נושא, ומיון שלישי לפי התאריך הרגיל או לפי החלק העשרוני (MOD 1)
    מכיון שהתאריך בכל מקרה שמור כמספר העלות של ההמרה היא אפסית.
    הסינטקס המדויק של ההמרות תלוי ב DB שאת עובדת עליו

  4. tal25 הגיב:

    אני עובד עם MS-SQL
    מה הסינטקס שמתאים אליו?

  5. זהר פלד הגיב:

    אז אפשר להשתמש ב datePart
    ב ms-sql כדי לקבוע מה הערך של חלק מסויים בתאריך. פרטים ב BOL.

  6. gilad123 הגיב:

    ככה


    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 זמן.

שלח תשובה