שימוש בUPDATE SET כשהתנאי מטבלה שונה

פורומים אפיון ופיתוח פריוריטי שימוש בUPDATE SET כשהתנאי מטבלה שונה

  • Post
    yaron
    משתתף
    שלום וברכה

    אני רוצה לדעת אם יש דרך לעשות UPDATE לשדה מסוים בטבלה X כשהWHERE מתייחס לשדה בטבלה Y

    למשל- האם אפשר לעשות UPDATE למספר טלפון של איש קשר – רק אם דגל מסוים במסך לקוחות מסומן (לא יכול להעתיק אותו גם למסך "אנשי קשר")

    תודה רבה

מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • Replies
    babun
    משתתף
    לדעתי כדאי לעשות בשני שלבים בשלב הראשון לשלוף את ה דגל של הלקוח מובלת הלקוחות למשתנה בצד.

    ואז לדלג על ה update או לחלופין להוסיף את ההתייחסות למשתנה הנ"ל בתנאי ה update.

    הרבה הצלחה..

     

     

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

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

    אם אנחנו מדברים על עדכון אני חוזר ומזכיר שאין לעדכן ככה שדות סטנדרטיים (לא שאמרתם שלזה אתם מתכוונים)

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

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

    חשבתי להריץ UPDATE חד פעמי מWINDBI כשהתנאי הוא לכל מי שהדגל "אישור משב"א" מסומן ב"Y" – שיעדכן את שדה קוד תנאי

    הבעיה היא שהשדה קוד תנאי הוא מטבלת PAYMENTTYPE והדגל אישור משבא הוא בטבלת PAYMENTDEF

    אשמח אם יש למישהו פתרון..

    yitzchok
    משתתף
    IL
    כנראה "לזה" אתם כן מתכוונים.

    יש לי מחויבות מקצועית לחזור ולדגיש:

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

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

    (בהערת אגב אגיד שעכשיו שפירטת, ברור שמה שכתב babun רומז לפתרון. אילו היה מתאים לבצע עדכון ב-UPDATE זה יהיה די פשוט כי אתם רוצים לעדכן את כל השורות ברלוונטיות באותה צורה)

    בסופו של דבר, אתם רוצים לעבור על לקוחות בהם במסך "חשבון/כרטיס אשראי לחיוב" יש Y ב-"אישור משב"א" , ולקבוע 5 בקוד תשלום באותו מסך?

    הייתי תוקף את זה ככה (ואם יש משהו מוכן יותר אני מתנצל, אני לא מכיר):

    תבנה ממשק מסך שטוען מקובץ עם FNCCUST ב-RECORDTYPE 1 ו-PAYMENTDEF ב- RECORDTYPE 2, בשורה של FNCCUST תקבע CUST (או CUSTNAME לדעתי שניהם אפשריים) בשורה של PAYMENTDEF תקבע PAYMENTCODE

    אז תכין קובץ עם שורות רלוונטיות. או שאילתא פשוטה שמוציא את הלקוחות המסומנים ע"י חיתוך בין CUSTOMERS ו-PAYMENTDEF (כאשר TYPE שווה ה-EXTTYPE של CUSTOMERS) ותכין את הקובץ באקסל בו תיסוף LINE ו-RECORDTYPE וגם שורה אחרי כל שורה עם ה-PAYMENTCODE

    או שאילתא יותר מורכב עם קורסור על בסיס אותו שאילתא, שיכתוב את כל הקובץ כמו שצריך בבת אחת

    לצערי אין תמיד פתרון קל לעדכון גורף

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.