› פורומים › אפיון ופיתוח פריוריטי › JOIN בין טבלאות המחזיר רק את ההתאמה המקס' / מינ'
- This topic has 4 תגובות, משתתף 1, and was last updated לפני 8 שנים, 11 חודשים by טל אלבס.
- Post
-
- דצמבר 21, 2015 בשעה 1:49 pm
שלום,
רציתי לשאול האם מישהו מכם מכיר דרך בה ניתן לבצע חיתוך בין טבלאות כך שתוצג רק התאמה המינימלית בקשר יחיד לרבים.
לדוגמא: כאשר אתה רוצה לבצע התאמה בין תעודה לבין השורות שלה (נניח כי לתעודה יש שלוש שורות), אבל רק שהשורה הראשונה בתעודה תוצג בדו"ח.תודה.
- Replies
-
- דצמבר 23, 2015 בשעה 9:54 am
אפשר בקלות לבצע זאת בפרוצדורה אך אינני בטוח שניתן לבצע באופן גורף בדו"ח
אם למשל יש פרוצדורה שעובדת על הזמנות לקוח ורוצים רק שורה אחת, אז ניתן לכתוב משהו כזה
select orderitems.ordi into :ordi
from orderitems
where orderitems.ord = :ord
כיון ששומרים את תוצאות השליפה במשתנה, נוכל לשמור רק מספר שורה אחת – אך כפי שכתוב, לא ניתן לדעת איזו שורה זו. ניתן להוסיף תנאים נוספים כמו ORDER BY ORDERITEMS.LINE וכד' אם רוצים שורה ספציפית.- דצמבר 24, 2015 בשעה 2:10 pm
לא ראיתי את המלה "מינימאלית" בשאלה שלך. אם כך, השאילתא צריכה להיות
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
- יש להתחבר למערכת על מנת להגיב.