שלח תשובה

זירת השאלות

434
צפיות
11
תשובות

שלום שאלתי מורכבת אבל מאתגרת

,‏ 26 במרץ, 2005

אני בונה מסד נתונים של מכירת דברים ליד שניה
אני נותן לגולש לעלות כל מוצר שהוא חפץ ולמכור אותו כרצונו בכמה מטבעות
1 דולר
2 יורו
3 שקל
הבעיה שניתקלתי בה היא כזו:
אני מעוניין שהגולש יכול לסדר את המוצרים לפי סדר יורד במחיר
אבל בטבלה מוצגים 2 שדות המתיחסים למחיר
1 שדה המחיר
2 שדה סוג המטבע
וכשאני עושה שאילתה על שדה המחיר אני בעצם מסדר את המסד בסדר שגוי
כי 100$ הם 450 שקל נגיד
ו ו120 שקל הם 120 שקל
אבל במסד אחרי השאילתה מהקטן לגדול זה מסתדר
100$
120
וכו…
וזה לא נכון כי 120 שקל הם פחות מ100$
האם יש למשהו רעיון איך לעשות את זה בצורה טוב?????
מאוד חשוב כאן הדיוק של המטבעות כי הדולר והיורו משתנים כל הזמן

צודה לכול העוזרים




תגיות:

11 תשובות

  1. אוריקס הגיב:

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

  2. zgone הגיב:

    שיטה מעניינת אבל מוטעת
    אם האדם יכתוב בשקלים את הסכום אז הוא לא ישמור אף פעם את הערך של השקל לאומת הדולר או היורו

    השיטה היא טובה ומצויינת ותפתור לי את בעיית הסדר אבל לא תפתור את בעיית אותו אדם שביקש לשמור על הערך של החפץ לאומת הדולר
    כי אחרי הכל אנשים נותנים מחירים שכפופים לדולר כדי לשמור על ערך החפץ
    כי 1000$ של היום הוא לא ה1000$ של עוד חצי שנה (הכל תלוי בכלכלת העולם)

    תודה על הכוונת העזרה אבל לא את זה ביקשתי

    יש למשהוא רעיון אחר??

  3. BMAORLO הגיב:

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

  4. BMAORLO הגיב:

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

  5. zgone הגיב:

    אני קרוב לפיתרון אבל מבקש עוד עזרה
    תודה לכל מי שמנסה לפתור לי את הבעיה

    אני מרגיש קרוב לפיתרון
    הכנסתי את הביטוי הלוגי הזה לשאילתא אחרי ה
    where
    pay*((nametable.coin='2')*-4.5)+((nametable.coin='3')*-5.5)+((nametable.coin='1')*-1))<=pay1
    pay – שדה מחיר
    coin – שדה מטבע
    coin=1   שקל
    coin=2   $
    coin=3   יורו
    אם הביטויים הלוגים היו שולפים את הערך
    -1
    במקום
    TRUE
    זה היה עובד
    אבל זה לא כך האם למשהו יש רעיון בכיוון ?
    תודה לכל העוזרים

  6. BMAORLO הגיב:

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

  7. Just-Tal הגיב:

    אני אסביר את הבחור.
    המערכת שלו היא מערכת לקניה ומחירת מוצרים יד שניה.

    נגיד אני טל, ואני רוצה למכור גיטרה ישנה במחיר 100$ (דולר)…
    שהיום שווים נגיד 430 שקל (נגיד)
    אז אם עוד חודש אף אחד לא קנה את הגיטרה שלי והדולה עלה ל 4.5 אז היום הגיטרה שווה 100$ שזה היום ע"פ 1$ = 4.5 שקל, 100$ = 450 שקל.

    ואם הוא יכניס את כל המחירים בשקלים… המחיר לא יהיה צמוד למטבע שהוא רוצה. (דולר יורו שקל).
    מבין?

  8. zgone הגיב:

    תודה JUST-TAL אני מקווה שעכשיו
    מבינים אותי יותר טוב
    באופן כללי מה שהציע BMAORLO זה פתרון טוב אבל לא מה שחיפשתי
    כי צריך לעשות סריקה על הטבלה כל כמה זמן
    למרות שאפשר לפתח את הרעיון שלו ליותר טוב על ידי שניצור שדה זמני ONLINE
    שיתרגם את הסכומים לשקלים ויסדר אותם לפי הסדר
    זהוא שדה שאין אותו בטבלה המקורית אלא הוא נוצר רק לזמן קצר כדי להפשר את הסדר הנכון
    שאלתי היא איך עושים שדה זמני כזה מבחינת SQL?

    אך מצאתי עוד דרך לוגית המוזכרת למעלה שאם היה ניתן במקום TRUE להביא
    -1  זה היה עובד
    אם למשהו יש פתרון גם לזה השמח לקבל

    תודה לכל העוזרים

  9. Just-Tal הגיב:

    למה לא…
    ליצור מערך ששם תסדר את מסםרי הID של המוצרים… ע"פ המחירים שלהם?

    ואחרי שהם יהיו מסודרים תרוץ עליהם ותציג אותם?

  10. אם זה כ"כ חשוב לך,
    למה שלא תעשה המרה בזמן אמת ותסדר לפיה?

    אתה יכול לשלוף את כל הטבלאה ל-getRows (לדוגמא), ולבצע סידור מחדש לפי שערי המטבעות של אותו יום, ואז להציג ללקוח.

    או אולי בכלל לעשות מערכת שתשאב את שערי המטבעות (נגיד, אחת לשבוע) אוטומטית אליך לבסיס נתונים, ואז עם איזה SP טובה אחת לבצע המרה וסידור בזמן אמת. אבל זה רק אם זה SQL Server וחבריו, קשה לי להאמין שאקסס או MySQL יסתדרו עם זה טוב (סה"כ זה פעולה שוטפת שתתבצע המוון פעמים…)

  11. god הגיב:

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

שלח תשובה