من میخوام قبل از ایجاد 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ها ایجاد کرد؟
[size=2][/size][rtl][size=2]من منظورتونو کلا متوجه نشدم ولی کنجکاوم SQL رو کامل ببینم اگه اشکالی نداشته باشه شاید از گنگی در بیاد سوالتون [/size][/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 نوشتم