חישוב מינימום מכמה עמודות

פורומים אפיון ופיתוח פריוריטי חישוב מינימום מכמה עמודות

  • Post
    sava
    משתתף
    היי,

    איך אני יכולה למצוא מינימום של כמה עמודות בפרוצדורה?

    יש את הפונק' MINOP אבל זה רק בין 2 עמודות…

    תודה

מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    אפשר לשרשר

    MINOP(MINOP(1,2),3)

    ולהוסיף כמה שתרצו

    במקום 3 שם יכול להיות עוד MINOP עם 2 ערכים לדוגמה

    • התגובה הזו עודכנה לפני לפני 4 שנים, 10 חודשים ע"י yitzchok.
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    sava
    משתתף
    תודה

    זה מה שעשיתי אבל קצת הסתבכתי כי אני צריכה את המינימום מ-4 ערכים ששונים מ-0 או גדולים מ-0

    יש לך רעיון איך אני יכולה לרשום את זה

    תודה מראש

    yitzchok
    משתתף
    IL
    זה קצת מאתגר במיוחד בתוך שאילתא. בקוד יותר קל.

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

    תלוי במה שאת עושה יכול להיות שיותר פשוט לשלוף את הערכים לשורות שונות בטבלת לינק (STACK כלשהו) ואז להריץ על זה שאילתא עם MIN. קשה להציע מרחוק פתרון שטוב לכל דבר.

    אבל באמת כאן יש מקרה שהרבה יותר קשה להתמודד איתו רק בגלל שאין בפריוריטי מושג של ערך NULL.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    אבל כל זה לגבי פתרון אלגנטי

    את משוואה רק 4 ערכים ואפשר להתסדר עם ביטויים של

    ( : ? )

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

    (כמובן גם לפסול את א אם צריך)

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    sava
    משתתף
    אני רוצה לעדכן טבלה עם כל מחירי הלקוח לפי פריט

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

    לכן אני מנסה להכניס את כל הנתונים בבת אחת

    אם אקח את הדוג' שלך אז אני אצטרך להניח שאחד הפרמטרים תמיד שונה מ-0 כדי שיהי לי מ לרשום אם כולם אפסים, נכון? אם כך, אניח שתמיד יש מחיר בסיס…
    <p dir="ltr">MINOP(MINOP(MINOP(1,(2 <> 0 ? 2 : (3 <> 0 ? 3 : (4 <> 0 ? 4 : 1)))),(3 <> 0 ? 3 : (4 <> 0 ? 4 : 1))),(4 <> 0 ? 4 : 1))</p>
    תודה

    yitzchok
    משתתף
    IL
    כן, נראה טוב, אבל לא עברתי על הכל

    הכי טוב פשוט להכין ולבדוק על מקרה קצה שעובד נכון, זה מה שהייתי עושה

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    NoamN
    משתתף
    none
    כתבת "אני לא רוצה להוסיף עוד cursor שירוץ על כל המקטים". לא ברור לי מאין זה הגיע, אבל דווקא משפט. אם יש כמה ערכים בטבלה לגבי כל לקוח, ניתן לשלוף את הערך המזערי באמצעות פונקציית MIN
    <p style="text-align: left;">SELECT MIN (SOMETHING) INTO :A</p>
    <p style="text-align: left;">FROM TABLE</p>
    <p style="text-align: left;">WHERE CUST = :CUST</p>
    או משהו דומה
    sava
    משתתף
    תודה, הצלחתי עם minop

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

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

    אבל תודה בכל זאת

     

    NoamN
    משתתף
    none
    תני לי להציע משהו אחר לגמרי: תכניסי את כל הערכים פעם אחת לתוך STACK8, לא באמצעות CURSOR. אחר כך תשלפי את הערך המזערי של כל פריט.

    LINK STACK8 TO $.STK;
    ERRMSG 1 WHERE :RETVAL <= 0;
    INSERT INTO STACK8 (KEY1, KEY2, REALDATA)
    SELECT PART, 1, PRICE
    FROM TABLE1
    WHERE …;
    INSERT INTO STACK8 (KEY1, KEY2, REALDATA)
    SELECT PART, 2, PRICE
    FROM TABLE2
    WHERE …;
    INSERT INTO STACK8 (KEY1, KEY2, REALDATA)
    SELECT PART, 3, PRICE
    FROM TABLE3
    WHERE …;
    INSERT INTO STACK8 (KEY1, KEY2, REALDATA)
    SELECT PART, 3, PRICE
    FROM TABLE4
    WHERE …;

    SELECT MIN (REALDATA)

    FROM STACK8
    WHERE KEY1 = :PART

    sava
    משתתף
    צודק, גם אפשרות, תודה
מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.