1

私はこのクエリを持っています:

SELECT p.ProjectName,
       p.Oid AS Oid,
       p.[Views] as [Views],
       COUNT(pb.BidId) AS Bids
FROM Project p
LEFT OUTER JOIN ProjectContractorBid pb ON p.Oid = pb.ProjectID
WHERE p.Oid='A8704DA9-999B-4B13-806B-E8490C480F57'
GROUP BY p.ProjectName,
         p.Oid,
         p.[Views]

これにより、ほぼ適切な結果が返されます。

Screenoshot 1

入札列の数値が3になっていることがわかるように、これら3つの入札は、プロジェクトの1つのみに対するものですが、他のプロジェクトにはまったく入札がありません。クエリで返された各レコードではなく、p.Oidで参照されているプロジェクトに対してのみ3を表示するように、クエリで何を変更する必要があるかを知りたいです。

これはプロジェクト請負業者の入札表です。

スクリーンショット2

ご覧のとおり、エンジェルテストの入札のみが他のすべての結果ではなく3の値を持つ必要があります。何を変更すればよいか教えてください。ありがとう、ラツィオ

更新:プロジェクトテーブル:

ここに画像の説明を入力してください

4

2 に答える 2

1

ProjectNameとの両方に参加する必要があると思いますProjectId。そうしないと、Bids値は、同じレコードだけでなく、プロジェクト内のすべてのレコードに関連付けられますProjectName

SELECT p.ProjectName, p.Oid as Oid, p.[Views] as [Views], pb.Bids
FROM Project p    
LEFT OUTER JOIN 
(
  select count(*) Bids, ProjectID, ProjectName
  from ProjectContractorBid
  group by ProjectID, ProjectName
) pb 
  ON p.Oid = pb.ProjectID  
  AND p.ProjectName = pb.ProjectName
WHERE p.Oid='A8704DA9-999B-4B13-806B-E8490C480F57'

また、入札単価を取得するためにサブクエリを使用するように切り替えました。

于 2013-01-03T22:39:30.267 に答える
0

on条件にProjectNameを含めます。

于 2013-01-03T22:43:45.347 に答える