1
select distinct 
   page0.MatterType, 
   page0.Name, 
   page0.MatterNo, 
   page0.security, 
   page0.serial,      
   page6.TribCaseNo, 
   contact0.Name as Cname
from 
   page0, page6, page14
left join 
   contact0 on page0.PrimaryContact = contact0.linkserial
where 
  page0.serial = page6.CaseSerial 
AND page0.serial = page14.CaseSerial 
AND (page14.staffmember = '100001^24' and page14.status != 'Inactive') 
AND page0.status != 'Closed'

エラーが発生し続けます

マルチパート識別子 page0.PrimaryContact をバインドできませんでした。

構文とスペルを確認しましたが、どちらも正しいようです。

ありがとう!

4

2 に答える 2

6

明示的な結合を行う必要があります。現在、古い結合構文を使用しています。リファクタリングを検討してください。

select P0.*, P6.TribCaseNo, C0.Name as Cname
FROM        page0 AS P0
INNER JOIN  page6 AS P6 on P0.serial = P6.CaseSerial 
INNER JOIN  page14 AS P14 ON P0.serial = P14.CaseSerial
LEFT JOIN   contact0 AS C0 on P0.PrimaryContact = C0.linkserial

WHERE (P14.staffmember = '100001^24' AND P14.status != 'Inactive') 
AND   P0.status != 'Closed'
于 2012-02-27T17:22:52.193 に答える
1

のテーブルの順序を変更することで、クエリを機能させることができますFROM

select distinct   
page0.MatterType,   
page0.Name,   
page0.MatterNo,   
page0.security,   
page0.serial,        
page6.TribCaseNo,   
contact0.Name as Cname  
from   
 page6, page14, page0 --NOTE: page0 is now  closest to join!!!
left join   
contact0 on page0.PrimaryContact = contact0.linkserial  
where   
page0.serial = page6.CaseSerial   
AND page0.serial = page14.CaseSerial   
AND (page14.staffmember = '100001^24' and page14.status != 'Inactive')   
AND page0.status != 'Closed'  

更新します
一般に、古い構文と新しい構文を混在させないことを強くお勧めします (ここで行われているように)。p.campbellのソリューションは、クエリを記述する正しい方法です。

于 2012-02-27T18:02:54.050 に答える