【问题标题】:Count how many times product is liked and all the products a particular user has liked in PHP and SQL在 PHP 和 SQL 中计算产品被喜欢的次数以及特定用户喜欢的所有产品
【发布时间】:2018-01-31 20:13:55
【问题描述】:

我是 PHP 和 SQL 的新手。我正在尝试计算产品被喜欢的次数以及特定用户喜欢的所有产品。但无法获得预期的结果。

我有 3 张桌子。

产品表: pro_id pro_info pro_price

用户表: id 用户名 密码

pro_likes 表: id 用户产品

在 pro_likes 表中,“user”和“product”列是分别引用 user(id) 和 product(pro_id) 的外键。如何了解特定产品被点赞的次数以及特定用户喜欢的产品?

我尝试了以下方法来找出前者,但它返回的是所有产品的计数,而不是单个产品。

$q="SELECT
    COUNT(pro_likes.product) AS likes
    FROM pro_likes                    
    LEFT JOINT products                    
    ON pro_likes.product = products.pro_id";                    
    $r=mysqli_query($con,$q);                
    $r1=mysqli_fetch_assoc($r);                
    echo $r1['likes'];                

有人可以帮忙吗?

【问题讨论】:

标签: php sql


【解决方案1】:

您需要按 pro_likes.product 对查询进行分组

【讨论】:

  • 试过了,但没有运气。现在它给每个产品1个赞
  • 像其他帖子建议的那样尝试
  • 不是一个真正的答案。这应该是一条评论。
【解决方案2】:

如果您要获得唯一的行,您还需要获取产品名称,否则您所做的只是计算连接的计数。

SELECT
COUNT(pro_likes.product) AS likes, pro_likes.product as product
FROM pro_likes                    
LEFT JOINT products                    
ON pro_likes.product = products.pro_id
GROUP BY pro_likes.product;

【讨论】:

    【解决方案3】:
    SELECT DISTINCT
    COUNT([pro_likes.prodcuts]) AS likes, 
    pro_likes.product AS product
    FROM pro_likes
    LEFT JOIN products
    ON pro_likes.product = products.pro_id
    GROUP BY pro_likes.product
    

    【讨论】:

      【解决方案4】:

      感谢大家的帮助。 我能够使用以下代码完成此操作:

      select count(pro_likes.product) as likes from pro_likes join products on pro_likes.product=products.pro_id where pro_likes.product='$pro_id'"

      其中 $pro_id 是 products.pro_id 已通过上一页的 URL 传递。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-09
        • 1970-01-01
        • 2022-08-16
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        相关资源
        最近更新 更多