0

クエリの作成に問題があります。以下は私が思いついたものです:

SELECT sitedata.sitecode       Site, 
       projectdata.startdate   Start, 
       projectdata.enddate     End, 
       resourcedata.firstname  PM_Name, 
       resourcedata.firstname  Lead_Name, 
       rresourcedata.firstname Other_Name 
FROM   projectdata 
       JOIN sitedata 
         ON projectdata.siteid = sitedata.id 
       JOIN resourcedata 
         ON projectdata.pmid = resourcedata.id 
             OR projectdata.leadid = resourcedata.id 
             OR projectdata.otherid = resourcedata.id 
WHERE  startdate = '03/06/2013' 

私のクエリからの現在の出力は次のとおりです。

Site   PM_Name   Lead_Name   Other_Name   
ST1    Joe       Joe         Joe
ST1    Jim       Jim         Jim
ST1    Bill      Bill        Bill
ST2    Lee       Lee         Lee
ST2    Jim       Jim         Jim
ST2    Bill      Bill        Bill

以下は私が取得しようとしている出力です:

Site   PM_Name   Lead_Name    Other_Name   
ST1    Jim       Joe          Bill
ST2    Bill      Lee          Jim
4

2 に答える 2

1

3つの個別のJOINSが必要です。

SELECT sitedata.sitecode       Site, 
       projectdata.startdate   Start, 
       projectdata.enddate     End, 
       pm.firstname  PM_Name, 
       ld.firstname  Lead_Name, 
       on.firstname Other_Name 
FROM   projectdata 
       JOIN sitedata ON projectdata.siteid = sitedata.id 
       LEFT JOIN resourcedata pm ON projectdata.pmid = resourcedata.id 
       LEFT JOIN resourcedata ld ON projectdata.leadid = resourcedata.id 
       LEFT JOIN resourcedata on ON projectdata.otherid = resourcedata.id 
WHERE  startdate = '03/06/2013'

一部の役割が割り当てられていない(NULL)場合は、LEFT JOINを使用しました。そうでないことが確実な場合は、INNERJOINを引き続き使用できます。

于 2013-03-06T21:00:48.567 に答える
0

あなたがする必要があるのは、探している名前ごとに 3 回リソース テーブルに参加することです...

SELECT 
      sitedata.sitecode       Site, 
      projectdata.startdate   Start, 
      projectdata.enddate     End, 
      PM.firstname  PM_Name, 
      LEAD.firstname  Lead_Name, 
      OTHER.firstname Other_Name 
   FROM   
      projectdata 
         JOIN sitedata 
            ON projectdata.siteid = sitedata.id 
         JOIN resourcedata as PM
            ON projectdata.pmid = PM.id 
         JOIN resourcedata LEAD
            ON projectdata.leadid = LEAD.id 
         JOIN resourcedata OTHER
            ON projectdata.otherid = OTHER.id 
   WHERE  
      startdate = '03/06/2013' 
于 2013-03-06T21:01:32.357 に答える