2013-01-03 37 views
1

我有這個疑問:修改SQL查詢來得到不同的結果

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個出價僅適用於其中一個項目,但不適用於所有項目,其他項目根本沒有任何出價。 我想知道我應該在查詢中修改什麼,以便只顯示p.Oid中引用的項目,而不是查詢中返回的每個記錄。

這是項目承包商投標表:

Screenshot 2

正如你可以看到只有天使測試競價應該有3個並不是所有的其他結果值。 請讓我知道我應該修改什麼。 謝謝,Laziale

UPDATE: 項目表:

enter image description here

+0

「項目」表是什麼樣的?結構,數據? – Taryn

+0

@bluefeet我包含了那個特定工作海報的項目表,你可以看到發佈的所有項目。 Thx – Laziale

回答

1

我認爲你需要加入對ProjectNameProjectId兩個,否則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' 

我也切換使用子查詢來計算出價。

+0

檢查我的更新後的帖子,thx – Laziale

+0

thx這就是我需要的,享受假期 – Laziale

+0

@Laziale很高興它現在工作。祝你節日快樂! – Taryn

0

在開啓條件中包含ProjectName。