Mysql的。计数不起作用的左联合

时间:2017-07-18 14:59:29

标签: mysql

我有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

这是各个查询返回的记录

enter image description here 现在只有21条记录由于DB的变化

enter image description here

1 个答案:

答案 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