繁体   English   中英

SQL联接和计数行

[英]Sql join and count rows

我正在尝试联接两个表,以便对其中一个表中的一行数据进行计数。

pin.idrepin.from_pin_id是两个不同表中的主数据库。

我正在尝试计算repin.from_pin_id的某个变量的行数repin.from_pin_id发生在board_id等于某个变量($ boardDetails-> id)的地方。 board_id位于pins ,这就是为什么我试图将repin加入该表的原因。 这是我可以提取特定板ID的唯一方法。

<?php 
$result = mysql_query("SELECT repin.from_pin_id, pins.id COUNT(from_pin_id) FROM repin  WHERE from_pin_id = pins.id LEFT JOIN pins ON repin.from_pin_id = pins.id");
$countit = mysql_result($result, 0);
?>

没有运气。 我希望这一点很清楚,很难解释。

编辑:

这是解决方案,我很努力,因为我错误地使用了错误的字段。 字段from_pin_id应该是owner_user_id

我接受了一些建议查询并使其起作用。 多谢你们。

<?php 
$result = mysql_query("SELECT COUNT(owner_user_id) 
FROM repin  
INNER JOIN pins ON pins.id = repin.from_pin_id 
WHERE owner_user_id='$boardDetails->user_id'
AND pins.board_id='$boardDetails->id'");
$countit = mysql_result($result, 0);
?>

尝试使用此SQL,但我对PHP并不熟悉,因此您可能需要调整字符串处理方式

<?php 
$result = mysql_query("
SELECT 
    repin.from_pin_id, 
    pins.id, 
    COUNT(from_pin_id) 
FROM 
    repin  
    LEFT JOIN pins ON 
       repin.from_pin_id = pins.id
       AND " + $boardDetails->id +" =  pin.board_id 
GROUP BY 
    repin.from_pin_id, 
    pins.id 
");
$countit = mysql_result($result, 0);
?>

如果我了解您要执行的操作,则似乎您想执行以下操作:

SELECT repin.from_pin_id, pins.id, COUNT(from_pin_id) 
FROM repin 
    LEFT JOIN pins ON repin.from_pin_id = pins.id
GROUP BY repin.from_pin_id, pins.id

您不需要WHERE子句-该子句在JOIN处理。 并且您需要添加GROUP BY子句。

您可以尝试下面的代码,而错过了pin.id and count之间的comma pin.id and count

<?php 
$result = mysql_query("SELECT repin.from_pin_id, pins.id,COUNT(from_pin_id) FROM repin  INNER JOIN pins ON pins.id = repin.from_pin_id WHERE pins.board_id='".$boardDetails->id."'");
$countit = mysql_result($result);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM