获取相关表mysql中的记录

时间:2015-12-10 23:31:03

标签: mysql sql database

我在mysql项目中使用php查询,但我遇到了疑问。现在我正在使用如下所示的查询来获取form表中的所有项目。

SELECT `user`.`name` AS `Detail`, `forms`.* 
FROM `forms` 
INNER JOIN `user` ON user.id = forms.user_id 
WHERE ((`forms`.`item_id`=52) 
AND (`forms`.`date`='11/28/2015')) 
AND (`forms`.`is_deleted`=0)

现在我想在名为records的结果集中再添加一列,我尝试了以下查询

SELECT `user`.`name` AS `Detail`, `forms`.*, count(registration.id) 
FROM `forms`  
INNER JOIN `user` ON user.id = user.user_id 
Left Outer JOIN registration ON registration.forms_id = forms.id 
WHERE ((`forms`.`item_id`=31) 
AND (`forms`.`date`="12/12/2015")) 
AND (`forms`.`is_deleted`=0)

因此,如果任何表单在registration表中没有条目记录而不是为此返回0,但我的查询只返回registration表中至少有1条记录的数据。我也尝试将inner join用于registration表,但它不起作用。

我现在得到的数据结果没有count功能就像这样

     Detail      id item_id  user_id name       date        
     User1       4  15       52      Testing 6  11/28/2015  
     User2       6  17       55      Testing 2  11/28/2015  
     User2       3  18       55      Testing 5  11/28/2015  
     User1       3  18       52      Testing 5  11/28/2015  

我想要的是这样的

     Detail      id item_id  user_id name       date        records
     User1       4  15       52      Testing 6  11/28/2015  2
     User2       6  17       55      Testing 2  11/28/2015  5
     User2       3  18       55      Testing 5  11/28/2015  0
     User1       3  18       52      Testing 5  11/28/2015  0

现在我知道如何使用另一个查询和打印结果来获取count,但是如果我可以在同一个查询中执行此操作,那么我就不必编写单独的查询来获取记录。

谢谢

1 个答案:

答案 0 :(得分:1)

您的查询甚至看起来根本不应该运行。如果您将字段与聚合函数混合,则所有裸字段都应位于group by子句中。看起来你所拥有的是正确的,除了缺少group by子句。我不认为你可以在一个组中使用*,所以你必须包括每个字段。类似的东西:

SELECT `user`.`name` AS `Detail`, 
    `forms`.Col1, 
    `forms`.Col2, 
    `forms`.Col3, 
    ... etc.
    count(registration.id) 
FROM `forms`  
INNER JOIN `user` ON user.id = user.user_id 
Left Outer JOIN registration ON registration.forms_id = forms.id 
WHERE ((`forms`.`item_id`=31) 
AND (`forms`.`date`="12/12/2015")) 
AND (`forms`.`is_deleted`=0)
group by  `user`.`name`, 
    `forms`.Col1, 
    `forms`.Col2, 
    `forms`.Col3, 
    ... etc.