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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. "רענון" טבלה בMYSQL

"רענון" טבלה בMYSQL

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

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

    אבל יש שלש קבוצות מספרים

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

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

    חשבתי לעשות פונקציה שתייצר את שלשת המערכים הנ"ל לפי שני הטבלאות (המקורית והחדשה), ואז לעשות INSERT לקבוצה השלישית וDELETE לשניה.
    יש אולי פיתרון יותר פשוט? סוג של פונקציה מובנית בMYSQL שאפשר להעלות כל הטבלא החדשה ולהגיד לו להסתדר עם זה?

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

    ליצירת קשר: admin@i-call.me

    הידד! גישה למייל גם בלי מחשב ואינטרנט!

    clickoneC תגובה 1 תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #2

      אולי זה יעזור:
      https://www.xaprb.com/blog/2006/02/21/flexible-insert-and-update-in-mysql
      ב-DB אחרים יש merge שעושה בדיוק מה שאתה מבקש

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      0
      • clickoneC מנותק
        clickoneC מנותק
        clickone
        השיב לשואף ב נערך לאחרונה על ידי clickone
        #3

        @שואף
        תנסה אולי להוסיף את זה לטבלה אחרת , ואז לעשות משפט INSERT שיכיל בתוכו בWHERE טבלת משנה
        משהו בסגנון כזה

        insert into tbl1 (tel,camption)
        select tel,camption from tbl2 
        where tbl1.tel not in (select tel from tbl2 where tbl2.campion =tbl1.camption)
        

        משהו בסגנון
        כתבתי את השאילתא מהזיכרון ולכן היא לא מושלמת
        זה להוספה
        למחיקה אתה יכול למחוק באותה השיטה אבל הפוך

        delete tbl1 (tel,camption)
        where tbl1.tel not in (select tel from tbl2 where tbl2.campion =tbl1.camption)
        

        המחיקה צריכה להיות לפני ההוספה

        אין טסט כמו פרודקשן.

        המייל שלי urivpn@gmail.com

        תגובה 1 תגובה אחרונה
        3
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          צריך שיהיה עמודה אחת שהשם שלה למשל batch שזה יהיה מס' או מזהה פעולה.
          בכל הכנסה של מספר יש להכניס מס' אחיד לכלל המספרים שנכנסו יחד איתו בעמודה batch.
          כעת הבעיה נפתרת:

          1. מבצעים הכנסה של כלל המספרים החדשים
            ביחס למספרים שכבר היו זה שתי אפשרויות:
            א. המספר טלפון הוא מפתח ראשי, במידה כזו אפשר ע"י ON DUPLICATE KEY UPDATE... לעדכן את הbatch בערך הנוכחי
            ב. המספר אינו מפתח ראשי, גם זה מחולק ל2 האם אכפת שיהיה שניים למשך כמה שניות, אם כן אז מצויין שייכנס בינתיים. אם אסור שיהיה כפול, פה כבר צריךIF בשאילתה שמעדכן או מוסיף.

          2. מוחקים את כלל השורות שהbatch שלהם שונה מהאחרון

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          3

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום