如何从左连接计算行数

时间:2014-06-06 05:58:49

标签: php mysql left-join

我正在为不同类型的实体店创建一个谷歌地图服务。商店的反馈存储在不同的表中,而其他数据则存在于不同的表中。我创建了一个查询,它正在向我返回完美的回复,但我需要进行计算反馈表中有多少行,以便我可以使用以下内容计算反馈的百分比:

$totalfeed=ceil(($price+$value+$quality)/(3*count(rows count from feedback table)));

这是我的查询

$query = sprintf("SELECT shoptitle,logopic,complocality, profileurl, lat, lng,feedprice,feedvalue,feedquality, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM marketplace_userdata LEFT JOIN marketplace_datafeedback ON marketplace_userdata.mageuserid=marketplace_datafeedback.proownerid HAVING distance < '%s' ORDER BY distance",
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($center_lng),
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($radius));
  }

2 个答案:

答案 0 :(得分:1)

您可以使用Count()函数计算任何查询的行数。

 SELECT COUNT(*) FROM table_name;

答案 1 :(得分:0)

对第一个表添加GROUP BY条件并指定要计数的表。您可以使用marketplace_datafeedback表中的字段替换星号:

SELECT COUNT(marketplace_datafeedback.*), 
    shoptitle, logopic, complocality, profileurl, 
    lat, lng, feedprice, feedvalue, feedquality, 
    ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance 
FROM marketplace_userdata 
LEFT JOIN marketplace_datafeedback 
ON marketplace_userdata.mageuserid = marketplace_datafeedback.proownerid 
GROUP BY marketplace_userdata.mageuserid
HAVING distance < '%s' 
ORDER BY distance