› פורומים › אפיון ופיתוח פריוריטי › דוח הזמנות כפולות
- This topic has 15 תגובות, 4 משתתפים, and was last updated לפני 3 שנים, 6 חודשים by sava.
- Post
-
- מאי 4, 2021 בשעה 11:28 am
היי,אשמח לעצה איך לבנות דוח הזמנות כפולות שיחפש נניח בכל ההזמנות עד שבוע אחורה נתונים דומים:
אותו לקוח, אותם מוצרים ואותם כמויות.
ניסיתי לבנות פרוצ' עם קרסור בתוך קרסור אבל זה הרבה יותר מסובך או שאני מסבכת את זה
אז אשמח לעצה לדרך הטובה ביותר לבנות דוח זה
תודה מראש
- Replies
-
- מאי 4, 2021 בשעה 3:39 pm
קודם כל שאילתא עם קיבוץ מתאים ו- having count גדול מ-1ולפי מה שיוצא מציגים את הפרטים (אני מניח שתרצו לראות אותם)
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 5, 2021 בשעה 9:26 am
תודה, עזר קצת אבל מה שאני מקבלת אלו הזמנות שיש בהם פריט או יותר שנמצא גם בהזמנה אחרת.אני צריכה לקבל רק הזמנות שכל הפריטים הנמצאים בה קיימים גם בהזמנה אחרת
- מאי 8, 2021 בשעה 10:06 pm
אז מה שעשית כבר זה בסיס לזהיש לך רשימה של לקוח+מוצר+כמות כאשר אותו צירוף קיים יותר מפעם אחת (או ביותר מהזמנה אחת בעזרת COUNT(DISTINCT ORD)
מזה את יכולה לחזור וליצור רשימה של לקוח+מוצר+כמות+ORD
את צריכה לכתוב שאילתא שבודק שיש שורת פירוט שקיימת ברשימה הנ"ל וגם שאין לה שורת פירוט שלא קיימת ברשימה הנ"ל.
הרשאון בעזרת EXISTS השני בעזרת NOT EXISTS או אולי NOT IN לדוגמה שה-ORD לא נמצא ברשימה של ORD מתוך ORDERITEMS (בתיתוך ל-ORDERS אחר כדי להשיג את הלקוח?) כאשר אלה לא נמצאים ברשימה הנ"ל. אבל יכול להיות שהשאילתא העלונה כבר על ORDERITEMS ו-ORDERS ואת עושה DISTINCT כדי לקבל כל הזמנה רק פעם אחת.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 23, 2021 בשעה 10:21 am
תודה לך.מסכמת מה שעשיתי בסוף:
רצתי על כל ההזמנות שמס' הלקוח וכמות הפריטים בהזמנה שווה בעזרת HAVING COUNT גדול מ-2
ואז רצתי בקרסור על כל הפריטים שבהזמנות שנשארו ושוב כאשר HAVING COUNT גדול מ-2
כפי הנראה התוצאה נכונה
- מאי 23, 2021 בשעה 3:12 pm
אני שמח שהסתדרת אבל חבל להשתמש בקורסור כל עוד יש אפשרות אחרת.[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 25, 2021 בשעה 1:22 pm
אז כנראה לא הבנתי אותךאיך אפשר בלי קרסור? יש מצב אתה כותב לי את זה אם זה קצר?
- מאי 25, 2021 בשעה 1:45 pm
תנסי את השאילתא הזוSELECT O1.ORDNAME, O2.ORDNAME
FROM ORDERS O1, ORDERITEMS OI1, ORDERS O2
WHERE O1.ORD = OI1.ORD
AND O1.CURDATE >= SQL.DATE8 – 7*24:00
AND O2.CURDATE >= SQL.DATE8 – 7*24:00
AND O1.CUST = O2.CUST
AND EXISTS (SELECT 1 FROM ORDERITEMS OI2
WHERE OI2.PART = OI1.PART
AND OI2.QUANT = OI1.QUANT)
AND O1.CUST > 0
AND OI1.ORDI > 0
FORMAT;- מאי 25, 2021 בשעה 9:50 pm
סליחה לי אישית אין זמן כרגע לרדת לרזולוציה הזאתנעם שים לב למה שנכתב ב5 וב8 במאי למעלה. אני לא חושב שהשאילתא שלך נותנת מענה לבקשה.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 26, 2021 בשעה 7:53 am
נכון, דילגתי על מלה אחת במשפט "אני צריכה לקבל רק הזמנות שכל הפריטים הנמצאים בה קיימים גם בהזמנה אחרת".כתבתי משהו דומה (בדיקת כפילות בעצי מוצר) ולעניות דעתי אי אפשר בלי קורסור (בעצם שניים). בשלב ראשון צריך לשלוף זוג הזמנות של אותו לקוח עם מספר שורות זהה, על בסיס חלק ממה שכתבתי קודם. אחר כך בלולאה פנימית צריך לבדוק שכל פריט מופיע בשתי ההזמנות עם אותה הכמות.
ספק רק אם אפשר לעשות זאת בשאילתא אחת ואם כן, היא תהיה כל כך מסובכת שאף אחד לא יבין ולא יהיה ניתן להוכיח שהיא מביאה את התוצאות הרצויות.
- מאי 26, 2021 בשעה 10:12 am
תודה רבה רבה לך נועםעשיתי עם קרסור אחד וכפי הנראה התוצאה טובה 🙂
- מאי 26, 2021 בשעה 10:42 am
ראשית כל אתם יכולים לעבוד עם קורסורים אם אתם רוצים.אני רק רציתי להגיד שלדעתי עדיף בלי, בסופו של דבר משלמים מחיר – לפעמים מאד גבוה – בביצועים.
אני מאמין שרוב מה שאומרים עליו "ניתן רק בקורסור" ניתן גם בסטים, ויותר יעיל, גם אם צריכים לבצע כמה שלבים של הכנה.
הייתי שמח להבין אם מה שהצעתי למעלה כן עונה על הדרישה או לא. הכוונה לשלוף הזמנות בהן כל הפריטים נמצאים בהזמנות אחרות כלשהן, או שכל הפריטים כבר נמצאות באותה הזמנה אחרת? תקראו את מה שכתבתי לגבי האוכלוסיה הנדרשת ותחשבו עם באמת לא יעבוד. יכול להיות שזה לא יתן מענה לשני אבל גם את זה לדעתי אפשר בלי קוסרור.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 26, 2021 בשעה 12:48 pm
אני גם הייתי מעדיפה להוריד את הקרסור אבל לא מצאתי דרך ולא הבנתי את מה שהצעת.הכוונה שלי היא להתריע כאשר יש הזמנות כפולות במערכת ולכן יצרתי את הדו"ח
הזמנה כפולה היא הזמנה ששווה אחד על אחד בלקוח, פריטים וכמויות
- מאי 27, 2021 בשעה 12:14 am
יכול להיות שמה שהצעתי שם לא מספיק לענות על דרישה זאת.אני הבנתי שרצית "רק הזמנות שכל הפריטים הנמצאים בה קיימים גם בהזמנה אחרת" …כלשיא… ואת רוצה שכולם יהיו גם באותה הזמנה אחרת
אני עדיין חושב שתהיה דרך להשיג את זה בלי קורסור, אבל צריכים לתכנן את זה טוב ואם בעזרת קורסור יש לך פתרון שעובד מספיק טוב, אין טעם לחפש פתרון אחר. יכול להיות גם שפתרון שאפשרי בדטהבייס מודרני לא יהיה פשוט (או אפשרי בכלל) ליישם ב-SQL המוגבל/מיושן של פריוריטי.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
- יש להתחבר למערכת על מנת להגיב.