פקודת UPDATE

  • Post
    chani v
    משתתף
    הי ,

    אני צריכה לעדכן שדה מטבלה 1 לטבלה 2:

    פירוט:

    אני צריכה שהערך משדה CHAN_TOTQUANT(כמות שעות לפרויקט שנתי ) התעדכן למסך פירוט הזמנות לקוח לשדה -TQUANT-כמות

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

    ניסיתי לכתוב כך:

    UPDATE ORDERSA SET TOTQUANT = CHAN_TOTQUANT ;
    WHERE TOTQUANT =' ';

    אודה לעזרתכם,

    חורף בריא 🙂

    חני

     

מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    כתבת הרבה על הסיבה לבצע את העדכון אבל זה פחות רלוונטי לנו.

    בעיקר אנחנו צריכים לשמוע האילו עמודות מדובר. הרי את כותבת "לעדכן שדה מטבלה 1 לטבלה 2".

    אבל במה שכתבת (שנראה כמו 2 פקודות בעקבות ה ; שיש) יש רק טבלה אחת. ואני לא מבין למה את משווה TOTQUANT למחרוזת/תו מסוג CHAR.

    בכל מקרה חשוב להתחיל עם משהו עקרוני: בפריוריטי אי אפשר בבת אחת לבצע עדכון מטבלה אחת לשניה. ב-SQL Server ובאורקל (עליהן יושבות מערכות הפריוריטי שלנו) זה אפשרי, אבל בסינטקס של פריוריטי לא נותן לנו מענה.

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

    לדוגמה (זה פשוט for the record ולא בהכרח רלוונטי כאן) אם בטבלה 1 רוצים בכל רשומה אחת מ-3 ערכים לפי מה שיש בטבלה 2, אפשר להסתדר עם 3 פקודות UPDATE, כל אחת תעדכן את כל הרשומות שצריכות אחת מהערכים האלה. לא צריכים לעבור אחת אחת על הרשומות בטבלה 1 ולהחליט בכל אחת איזה ערך נדרש, שזה תהליך הרבה הרבה פחות יעיל.

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

     

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    NoamN
    משתתף
    none
    אמנם אין לנו תמונה כוללת של מה שאת רוצה לעשות, אבל אזכיר דבר אחד שלעיתים שוכחים: העדכון צריך להתבצע על הטבלה האמיתית, לא טבלה מלונקקת. כך אם יש פקודה LINK ORDERSA TO, אז צריך לכתוב משהו כמו UPDATE ORDERSA ORIG SET
מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)

תגיות: 

  • יש להתחבר למערכת על מנת להגיב.