نمایش نتایج 1 تا 2 از 2

نام تاپیک: Join سه جدول همراه با یک شرط

  1. #1

    Question Join سه جدول همراه با یک شرط

    سلام
    این قسمتی از ER من است:

    این رو برای آرشیو اسناد طراحی کردم.
    سه نوع سند داریم. report، map و techtxt که وجوه اشتراک اون هارو توی doc ذخیره می کنم و فایل های مربوط به هر سند رو به جدول doc پیوند دادم.
    حالا وقتی می خوام اطلاعات وارد شده رو لیست کنم، باید از سه جدول(جداول attach و doc و یکی از سه جدول reportیا map یا techtex) اطلاعات رو بگیرم با این شرط که فیلد idDoc که در هر سه وجود داره، یکسان باشه.
    برای این کار از Join استفاده کردم ولی دو مشکل دارم.
    1. دو جدول رو می تونم Join کنم ولی جدول سوم رو نتونستم.
      SELECT * FROM `doc`,`map` WHERE (doc.idDoc=map.idDoc)

      برای جدول سوم چطوری عمل کنم؟ یعنی این فرم:
      SELECT * FROM `doc`,`map`,`report`

      البته توجه داشته باشید که رکورد های جدول attach متعدد خواهند بود.
    2. چطور می تونم همراه با JOIN یک شرط هم به کار ببرم؟
      چیزی مثل این:
      SELECT * FROM `doc`,`map` WHERE (doc.idDoc=map.idDoc) and idDoc=4

    از توجه شما ممنونم

  2. #2

    نقل قول: 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

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •