MS -SQL מסובך (לדעתי מאוד)

rchokler

New member
MS -SQL מסובך (לדעתי מאוד) ../images/Emo4.gif

קצת תאוריה sever 2000, אני מקבל עדכון מטבלא שכוללת פתיחות וסגירות של מחלקות, לפעמים אני מקבל שורה אחת בלבד וזה מבחינתי תקין, ולפעמים אני מקבל שתי שורות עבור מחלקה, זה במקרה שהמחלקה נסגרה ונפתחה שוב לאחר תקופה. גם במקרה של מחלקה 2 זה תקין הסגירה מתבצעת לפני פתיחה חדשה. הבעיה שלי היא שלפעמים אני מקבל זיבול, ז"א פתיחת מחלקה לפני שסגרו אותה דוגמא מספר 3 אני מעונין במקרה של זיבול להחליף את התאריך סגירה בשורה הראשונה של מחלקה עם תאריך הפתיחה בשורה השנייה של אותה המחלקה. קוד מחלקה תאריך פתיחה תאריך סגירה שורה אחרונה 1 01/06/2007 04/08/2007 1 2 04/04/2005 04/05/2005 1 2 05/05/2007 05/08/2007 2 3 06/05/2007 19/05/2007 1 3 16/05/2007 29/05/2007 2 4 04/07/2003 03/04/2007 1
 

HaRmosh

New member
...

לא ברור בכלל - איך אתה מבצע הכנסת רשומה חדשה ? עדכונים ? DB לא "מזדבל" לבד. הערכים שאתה מכניס (או לא...) גורמים כנראה לבעיה.
 

עייטן

New member
הצעת פיתרון

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

גרי רשף

New member
נסה כך..

Select A.Mahlaka, A.Ptiha, Case When A.Sgira<A.Ptiha Then B.Ptiha Else A.Sgira End Sgira, A.Shura From Tavla A Left Join Tavla B On A.Mahlaka=B.Mahlaka And A.Shura=B.Shura-1​
 

rchokler

New member
גרי תודה אבל הקוד שלך עדיין חסר אשמח לעזרה

הנה שיפצתי את הקוד שלך שני בעיות. 1.הקוד לא מעדכן רק יוצר שליפה חדשה --- אני מעוניין בעדכון 2.בשורה מספר 2 (הפתיחה השניה) תאריך הפתיחה יהיה זהה לתאריך הסגירה -- אבל... אין החלפת נתונים בתאריך הסגירה של שורה 1 ז"א אין החלפת נתונים בין שני התאריכים יש רק לקיחת הערך הגדול והצבתו בתאריך פתיחה חדש, מה שלא מדוייק בדרישה. אשמח לעזרתך
Select A.ID,A.FROM_DATE, Case When A.TO_DATE > B.FROM_DATE Then B.FROM_DATE Else A.TO_DATE End,A.LAST_RECORD From YECHIDOT A Left Join YECHIDOT B On A.ID=B.ID And A.LAST_RECORD=B.LAST_RECORD-1​
 

rchokler

New member
מקפיץ....קפיץ

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