LEFT JOIN ותנאי אחרי החיתוך בדו"חות

פורומים אפיון ופיתוח פריוריטי LEFT JOIN ותנאי אחרי החיתוך בדו"חות

  • Post
    HG
    משתתף
    כאשר אני מוסיף תנאי לטבלה ב left join, התנאי עובד לפני החיתוך.

    איך מאלצים את המערכת לשים את התנאי (על STACK8.KEY2) ב where  ולא ב on של החיתוך?

     

    זה ה dump של הדו"ח
    <p dir="ltr" style="direction: ltr; text-align: left;">SELECT STACK9.INTKEY AS 'INTKEY',
    STACK9.CHARDATA AS 'CHARDATA',
    STACK8.KEY2 AS 'KEY2',
    STACK9.INTKEY AS 'INTKEY'
    FROM STACK9 , STACK8 ?
    WHERE (STACK9.INTKEY = STACK8.KEY1)
    AND (STACK9.INTKEY > 2
    AND STACK8.KEY2 = 1)
    AND ( 1=1 )</p>
    SQL שיוצא:

     
    <p dir="ltr" style="text-align: left;">select demo.dbo.STACK9.INTKEY ,
    demo.dbo.STACK9.CHARDATA ,
    coalesce( demo.dbo.STACK8.KEY2 , 0 ) ,
    demo.dbo.STACK9.INTKEY

    from demo.dbo.STACK9 left outer join demo.dbo.STACK8 on ( demo.dbo.STACK8.KEY2 = 1 ) and ( demo.dbo.STACK8.KEY1 = demo.dbo.STACK9.INTKEY )

    where ( demo.dbo.STACK9.INTKEY > 2 ) and ( 1 = 1 )</p>
    <p dir="ltr"></p>
    <p dir="ltr"></p>

    • הדיון הזה עודכן לפני 7 חודשים ע״יHG.
מוצגות 3 תגובות – 1 עד 3 (מתוך 3 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    מהתמונה שהצלחתי לבנות אצלי במשך השנים, אני חושב (אבל לא יכול להבטיח) שאם תשים במילוי של STACK8 את ה-1 גם בעמודה אחרת (שלא חלק מה-U) ותתנה עליה, התנאי יחול לאחר החיתוך ולא כחלק ממנו.
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    HG
    משתתף
    וואו, עבד!

    הצליח גם עם עמודה אחת אם חזרתי על ההתניה פעמיים.

    אם כי זה מרגיש לי כמגבלה של האופצימייזר ל SQL ולא כמשהו מכוון…

     

    הערה- זה עובד רק שחוזרים על ההתניה פעם נוספת (שניה) בעמודה אחרת/נוספת כפי שיצחק כתב.

    כאשר מורדים את ההתניה הישירה (על stack8.key2)  ונשארים רק עם התניה יחידה ("נוספת") זה לא עובד.

     

    yitzchok
    משתתף
    IL
    הנושא הזה מעורפל אצלי גם

    לפעמים אני חושב שזה עניין של עמודה מול עמודה (ולא ערך קבוע או ביטוי)

    לפעמים אני חושב שזה עניין של עמודות שבמפתח U

    ולא חקרתי עד שיהיה מספיק ברור לי וסיכמתי בכתב, וחבל

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

    אני שמח שמצאת פתרון

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
מוצגות 3 תגובות – 1 עד 3 (מתוך 3 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.