Join فیلتر کردن رابطه قبل از

[font="Tahoma"][rtl]سلام

من میخوام قبل از ایجاد join یه سری فیلتر رو جدول اعمال کنم

یعنی یه همچنین چیزی

[/rtl][/font]

[sql]LEFT JOIN

(

SELECT

asset_mnt.test_id,

MAX(asset_mnt.done_date) AS date

FROM asset_mnt

WHERE …

GROUP BY …

) AS t1

ON t.asset_id = t1.asset_id [/sql]

[font="Tahoma"][rtl]

اگه با جدول asset_mnt رابطه many to many ایجاد کنم. چه مقدار together رو true یا false قرار بدم و چه condition رو درون with بنویسم و چه بیرون در هر صورت در query که ایجاد می شه همه condition ها رو بعد از join اعمال می کنه که در نهایت به این چیزی که نوشته شده منتهی نمی شه

البته نا گفته نماند میشه where رو درون on نوشت با رابطه مربوطه ولی بقیه فیلتر ها رو نمی شه اعمال کرد

امکان داره دستور بالا رو با استفاده از relationها ایجاد کرد؟

[/rtl][/font]

[size=2][/size][rtl][size=2]من منظورتونو کلا متوجه نشدم ولی کنجکاوم SQL رو کامل ببینم اگه اشکالی نداشته باشه شاید از گنگی در بیاد سوالتون [/size][/rtl]

حل شد:

[font="Tahoma"][rtl]

ببین من میخواستم از criteria->with استفاده کنم بجای join

اما نمی شد چون میخواستم قبل از این که با اون جدول with بزنم یسری فیلتر اعمال کنم مثل با جدولی که قبلا group by شده و max زده شده و order شده و where زده شده این کار رو بکنم نه اینکه با جدول with بزنم بعد group by بزنم

اینجوری شما هر نوع join هم که بزنی نتیجه قبل رو بهت نمیده چون قبل از join باید فیلتر ها رو جدول اعمال شده باشه و دلیل دیگه اینکه شما بعد join شاید دوباره بخوای یسری فیلتر دیگه اعمال کنی

چون تو رابطه with اگه شما در قسمت on شروط مربوط به where که بزنی قبل از join اعمال میشه من این کار رو کردم

یه view ساختم و همه فیلتر هارو روش اعمال کردم حتی max که می خواستم

بعد با اون with زدم و where که هردفعه تغییر می کرد و باعث می شد شما یه dynamic view داشته باشید رو تو on نوشتم

نتیجتا جوابی که می خواستم گرفتم[/rtl][/font]