我有2张桌子。 takeoffheaders就像它的名字所示,标题表和takeoffitems是项目表。
某些标题记录没有任何相关的项目记录。我需要计算相关的项目记录。
当我运行此代码时,我得到了23条记录。
SELECT
takeoffheaders.Estimate_description
FROM
takeoffheaders
WHERE
TakeOffHeaders.CostCodeguid = '{026F8AEE-0ADA-4DD0-8826-0B0C3BDB15EC}'
and takeoffheaders.Job_Guid = '{FECD00C7-8C16-4D49-AC6A-DE5D5698219A}'
当我运行此代码时,我只返回8条记录。
Select
takeoffheaders.Estimate_description,
count( takeoffitems.Estimate_guid ) AS COUNT
FROM
takeoffheaders
LEFT JOIN takeoffitems
ON takeoffheaders.Estimate_guid = takeoffitems.Estimate_guid
AND takeoffheaders.Client_Guid = takeoffitems.Client_Guid
WHERE
TakeOffHeaders.CostCodeguid = '{026F8AEE-0ADA-4DD0-8826-0B0C3BDB15EC}'
and takeoffheaders.Job_Guid = '{FECD00C7-8C16-4D49-AC6A-DE5D5698219A}'
GROUP BY
takeoffitems.Estimate_guid
除了连接和计数之外,它们是相同的。如果我改变
count( takeoffitems.Estimate_guid ) AS COUNT
to
takeoffitems.Estimate_guid
没有预期的任何差异。
编辑。
当我删除其中一个没有任何项目的标题记录时,我仍然只能获得8条记录而且我的记录不同。
编辑2.
我只能在联接中找回8条记录,但我只得到一条零计数的记录....
编辑3
这是各个查询返回的记录
答案 0 :(得分:1)
分组依据不在选择中的表(至少一个未聚合的表)
SELECT takeoffheaders.Estimate_description
, count( takeoffitems.Estimate_guid ) AS COUNT
FROM takeoffheaders
LEFT JOIN takeoffitems
ON takeoffheaders.Estimate_guid = takeoffitems.Estimate_guid
AND takeoffheaders.Client_Guid = takeoffitems.Client_Guid
WHERE TakeOffHeaders.CostCodeguid = '{026F8AEE-0ADA-4DD0-8826-0B0C3BDB15EC}'
and Takeoffheaders.Job_Guid = '{FECD00C7-8C16-4D49-AC6A-DE5D5698219A}'
GROUP BY --takeoffitems.Estimate_guid --not this one
takeoffheaders.Estimate_guid --this one