【问题标题】:Sql join and count rowsSql 连接和计算行数
【发布时间】:2013-05-24 22:36:48
【问题描述】:

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

pin.idrepin.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);
?>

【问题讨论】:

  • 运气不好怎么办?该语句是否给您错误的结果或您是否收到错误消息,如果有,是什么错误消息?
  • 消息:mysql_result() 期望参数 1 是资源,给定的布尔值
  • 我刚刚查看了mysql_query 的手册,上面写着“对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 在成功时返回资源,或者 FALSE错误”,我猜你的 select 语句有问题。您是否尝试在数据库查询程序中运行它?我想我在列列表中看到了一个缺少逗号。

标签: mysql sql join count


【解决方案1】:

试试这个 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);
?>

【讨论】:

  • 我想我解释错了。 pin.id 和 repin.from_pin_id 是两个不同表中的主要元素。我正在尝试计算 repin.from_pin_id 的数量,其中 board_id 等于某个变量($boardDetails->id)。 board_id 位于pins,这就是我尝试将repin 加入该表的原因。这是我获得特定板的唯一方法。
【解决方案2】:

如果我理解你想要做什么,看起来你想做这样的事情:

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 和 repin.from_pin_id 是两个不同表中的主要元素。我正在尝试计算 repin.from_pin_id 的数量,其中 board_id 等于某个变量($boardDetails->id)。 board_id 位于pins,这就是我尝试将repin 加入该表的原因。这是我获得特定板的唯一方法。
【解决方案3】:

您可以尝试使用以下代码,但您在pin.id and count 之间错过了comma

<?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);
?>

【讨论】:

  • 我想我解释错了。 pin.id 和 repin.from_pin_id 是两个不同表中的主要元素。我正在尝试计算 repin.from_pin_id 的数量,其中 board_id 等于某个变量($boardDetails->id)。 board_id 位于pins,这就是我尝试将repin 加入该表的原因。这是我获得特定板的唯一方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多