10-05-2009, 13:52
|
|
|
חבר מתאריך: 27.09.04
הודעות: 52
|
|
צריך עזרה עם "תעדוף" תוצאות - MYSQL
שלום, זה קצת בלאגן אשמח אם תקחו דקה להקשיב לבעיה.
נניח ויש לי טבלה שמורכבת מהשדות הבאים :
total_scores
id, cat_type, score
ID - זיהוי השורה (אוט')
CAT_TYPE = מס' ID קטגוריה (מטבלה אחרת)
SCORE = ציון כללי (לשם הדוג' מ 1 עד 10)
כרגע, יש לי משתמש באתר שמוגדרים בחשבונו הנתונים-
הוא מעוניין לתת עדיפות תצוגה ל CAT_TYPE מסוג X, בכ 50%.
CAT_TYPE מסוג Y בכ 25%. CAT_TYPE מסוג Z , כ 25%.
הכוונה היא, שהנתונים אותם הוא יקבל בתוצאות החיפוש יהיו מסודרים על פי התעדוף אותו הוא קבע.
המשתמש ניגש למנוע חיפוש באתר, ובחר להציג את כלל הרשומות.
בחיפוש המבוסס על הטבלה שבנינו מקודם total_scores, הוא בחר להחזיר תוצאות על פי SCORE בתצורת DESC. (מהציונים הגבוהים לנמוכים).
הוחזרו לי הנתונים הבאים :
10 שורות עם CAT_TYPE מסוג X.
10 שורות עם CAT_TYPE מסוג Y.
20 שורות עם CAT_TYPE מסוג Z.
+
100 שורות עם CAT_TYPE מסוגים שונים, אותם המשתמש לא הגדיר אבל עדיין רלוונטיים לחיפוש.
סה"כ 240 רשומות,
מתוכן 40 רשומות אותן המשתמש "תעדף" (=הן צריכות להיות ראשונות).
ממבט ראשון זה לא נשמע מסובך.
מסדרים קודם על פי X Y ו Z ומציגים אותם ראשונים.
הבעיה היא שהתעדוף צריך גם להתבצע בצורה יחסית לנתונים אותם המשתמש הגדיר.
למשל, בדוגמא הזו. קיבלתי 40 שורות רלוונטיות שצריכות להופיע ראשונות,
אבל גם בינן לבין עצמן צריך להיות סוג של סינון.
X צריך להופיע 50 אחוז מהפעמים (40/2=20).
Y צריך להופיע 25 אחוז מהפעמים (40/4=10) וכמו כן גם Z.
הנתונים שיופיעו למעלה יהיו עם ה SCORE הכי גבוה מן הסתם...
כל שאר הנתונים ש "מיפינו" החוצה, צריכים להופיע בשלב אחר בקריאת הנתונים.
אשמח לעזרה.
תודה.
|