Join سه جدول همراه با یک شرط
سلام
این قسمتی از ER من است:
http://v1.iimmgg.com/images/is7gr/6a...d0136bcb28.png
این رو برای آرشیو اسناد طراحی کردم.
سه نوع سند داریم. report، map و techtxt که وجوه اشتراک اون هارو توی doc ذخیره می کنم و فایل های مربوط به هر سند رو به جدول doc پیوند دادم.
حالا وقتی می خوام اطلاعات وارد شده رو لیست کنم، باید از سه جدول(جداول attach و doc و یکی از سه جدول reportیا map یا techtex) اطلاعات رو بگیرم با این شرط که فیلد idDoc که در هر سه وجود داره، یکسان باشه.
برای این کار از Join استفاده کردم ولی دو مشکل دارم.
- دو جدول رو می تونم Join کنم ولی جدول سوم رو نتونستم.
SELECT * FROM `doc`,`map` WHERE (doc.idDoc=map.idDoc)
برای جدول سوم چطوری عمل کنم؟ یعنی این فرم: SELECT * FROM `doc`,`map`,`report`
البته توجه داشته باشید که رکورد های جدول attach متعدد خواهند بود. - چطور می تونم همراه با JOIN یک شرط هم به کار ببرم؟
چیزی مثل این: SELECT * FROM `doc`,`map` WHERE (doc.idDoc=map.idDoc) and idDoc=4
از توجه شما ممنونم
نقل قول: Join سه جدول همراه با یک شرط
به نمونه ی زیر نگاه کنید:
SELECT * FROM doc
LEFT JOIN map ON map.idMap=doc.idDoc
LEFT JOIN report ON report.idMap=doc.idDoc
LEFT JOIN techtxt ON techtxt.idMap=doc.idDoc
LEFT JOIN attach ON attach.idMap=doc.idDoc
WHERE doc.idDoc = 4
GROUP BY doc.idDoc
برای JOIN میشه شرط هم گذاشت مثلا به JOIN آخر دقت کنید:
SELECT * FROM doc
LEFT JOIN map ON map.idMap=doc.idDoc
LEFT JOIN report ON report.idMap=doc.idDoc
LEFT JOIN techtxt ON techtxt.idMap=doc.idDoc
LEFT JOIN attach ON attach.idMap=doc.idDoc AND attach.timestamp < NOW()
WHERE doc.idDoc = 4
GROUP BY doc.idDoc