php mysql从2个表中选择计数

时间:2017-07-18 10:54:48

标签: php mysql

我在Mysql中有2个表

表1:项目(itemNO,类型,名称)
表2:备注(itemNO,内容)

我用while来查看项目数据

NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];

我想显示在两个表中共享相同itemNO的项目的备注计数 我试图创建新的查询,同时计算项目的备注,但失败。

我应该怎样做以显示其中的评论数量?

4 个答案:

答案 0 :(得分:1)

这可以在1个查询中完成:

SELECT item.itemNO, item.type, item.name,
       COUNT(*) AS totalRemarks
FROM item
LEFT JOIN remark ON remark.itemNO = item.itemNO
GROUP BY item.itemNO, item.type, item.name
ORDER BY RAND() 
LIMIT 5

左连接,因为您可能希望看到没有备注的项目

我注意到一个缺陷:如果没有评论,它仍然会提到“1”

这种改变可以解决它:

SELECT item.itemNO, item.type, item.name,
       COUNT(remark.itemNO) AS totalRemarks
FROM item
LEFT JOIN remark ON remark.itemNO = item.itemNO
GROUP BY item.itemNO, item.type, item.name
ORDER BY RAND() 
LIMIT 5

答案 1 :(得分:0)

使用join来实现此目的。试试这个查询

$sql="SELECT count(itemNO) as totalItem FROM item i inner join remark r on r.itemNO = i.itemNO";

答案 2 :(得分:0)

你应该使用   INNER JOIN

operator*

答案 3 :(得分:0)

无需多次查询。简单使用JOIN and GROUP BY CLAUSE

 select i.* ,r.*,count(r.itemNO) as remark_count 
 from item as i 
 left join remark as r 
 on (i.itemNO=r.itemNO) 
 WHERE i.itemNO='$No'
 group by i.itemNO