2013-02-05 119 views
0

我有一个Mysql查询,从2个表中选择一些内部连接的列。它应该计算来自一个表格列的“Y”值并用一个分组依据进行计数。MYSQL内部连接计数子查询

这是我的查询:

SELECT (SELECT Count(tblinterview.Contacted) FROM tblinterview WHERE tblinterview.Contacted = "Y") 
as Contact_Y , tbldata.RegionID, tbldata.BranchCode, tbldata.BranchDesc, tbldata.CampaignID,  tblinterview.EndTime  
FROM tbldata INNER JOIN tblinterview 
WHERE tblinterview.DataID = tbldata.DataId 
AND tblinterview.Complete = "Y" 
GROUP BY tbldata.BranchCode, tbldata.RegionID, tblinterview.EndTime 

通过我的结果集为: ,所有的Contact_Y是所有记录,而不是分组计数的总数。

Contact_Y  RegionID  BranchCode   BranchDesc  CampaignID EndTime 
1407   1   9725   Dada Motors  31   2012-01-26 12:51:12 
1407   1   9725   Dada Motors  31   2012-01-31 10:25:18 
1407   1   9725   Dada Motors  31   2012-02-01 11:30:37 
1407   1   9725   Dada Motors  31   2012-02-01 14:48:57 
1407   3   9732   Ballito Autohaus 37  2012-01-16 15:04:12 
1407   3   9732   Ballito Autohaus 46   2012-01-18 11:59:53 
1407   3   9732   Ballito Autohaus 31   2012-01-20 14:26:12 
1407   3   9732   Ballito Autohaus 31   2012-01-20 16:05:48 

有人能解释我的查询错在哪里吗?

+0

我们可以略过解释,只是给你一个答案这是正确的? – Strawberry

+0

@strawberry,我们的答案也将工作谢谢! :) – user1882752

回答

4

试试这个

SELECT (SELECT Count(s.Contacted) 
     FROM tblinterview s 
     WHERE s.Contacted = "Y" AND 
     tbldata .DataID = s.DataID) as Contact_Y , 
     tbldata.RegionID, 
     tbldata.BranchCode, 
     tbldata.BranchDesc, 
     tbldata.CampaignID,  
     tblinterview.EndTime  
FROM tbldata 
     INNER JOIN tblinterview ON tblinterview.DataID = tbldata.DataId 
WHERE tblinterview.Complete = "Y" 
GROUP BY tbldata.BranchCode, tbldata.RegionID, tblinterview.EndTime 
+0

如果查询不工作,可以你给样品数据与期望的结果? –

+0

谢谢,这看起来是正确的数据。多谢。 – user1882752

+0

491243,你可以看看这个熟悉的问题:http://stackoverflow.com/questions/18427180 –

1
SELECT 
    Count(tblinterview.Contacted) as Contact_Y, 
    tbldata.RegionID, 
    tbldata.BranchCode, 
    tbldata.BranchDesc, 
    tbldata.CampaignID, 
    tblinterview.EndTime 
FROM 
    tbldata INNER JOIN tblinterview 
    ON (tblinterview.DataID = tbldata.DataId 
     AND tblinterview.Contacted = "Y") 
GROUP BY 
    tbldata.BranchCode, 
    tbldata.RegionID,tblinterview.EndTime 
+0

谢谢,但这是我在短的地方:“SELECT Count(tblinterview.Contacted)as Contact_Y”我需要这个计数只在tblinterview.Contacted =“Y” – user1882752