JOIN בין טבלאות המחזיר רק את ההתאמה המקס' / מינ'

פורומים אפיון ופיתוח פריוריטי JOIN בין טבלאות המחזיר רק את ההתאמה המקס' / מינ'

  • Post
    טל אלבס
    משתתף
    שלום,
    רציתי לשאול האם מישהו מכם מכיר דרך בה ניתן לבצע חיתוך בין טבלאות כך שתוצג רק התאמה המינימלית בקשר יחיד לרבים.
    לדוגמא: כאשר אתה רוצה לבצע התאמה בין תעודה לבין השורות שלה (נניח כי לתעודה יש שלוש שורות), אבל רק שהשורה הראשונה בתעודה תוצג בדו"ח.

    תודה.

מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • Replies
    אלמוני
    אורח
    אפשר בקלות לבצע זאת בפרוצדורה אך אינני בטוח שניתן לבצע באופן גורף בדו"ח
    אם למשל יש פרוצדורה שעובדת על הזמנות לקוח ורוצים רק שורה אחת, אז ניתן לכתוב משהו כזה
    select orderitems.ordi into :ordi
    from orderitems
    where orderitems.ord = :ord
    כיון ששומרים את תוצאות השליפה במשתנה, נוכל לשמור רק מספר שורה אחת – אך כפי שכתוב, לא ניתן לדעת איזו שורה זו. ניתן להוסיף תנאים נוספים כמו ORDER BY ORDERITEMS.LINE וכד' אם רוצים שורה ספציפית.
    טל אלבס
    משתתף
    תודה רבה
    אלמוני
    אורח
    לא ראיתי את המלה "מינימאלית" בשאלה שלך. אם כך, השאילתא צריכה להיות
    select min (orderitems.ordi) into :ordi
    from orderitems
    where orderitems.ord = :ord

    תהיה בעיה כאשר רוצים לשמור שדה מסוים אבל מחשבים את המינימום של שדה אחר. נניח שיש כמה שורות הזמנות רכש עבור פריט מסוים עם תאריכי אספקה שונים ורוצים לקבל את מספר השורה של השורה בעלת התאריך המוקדם ביותר. במקרה כזה חייבים קודם למצוא מה התאריך המוקדם ביותר
    select min (arrdate) into :date
    from porderitems
    where part = :part
    and closed 'c'

    ואחר כך למצוא את מספר השורה לפי התאריך הזה
    select min (ordi) into :ordi
    from porderitems
    where part = :part
    and arrdate = :date

    אפשר להשתמש בשיטת "שלוף הכל אך שמור רק שורה אחת" –
    select ordi, arrdate into :ordi, :arrdate
    from porderitems
    where part = :part
    'and closed 'c
    order by arrdate desc

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

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