php - mysql select/delete using join over 四个表

标签 php mysql join multiple-tables

我有四个表(在 [] 中是列):

用户 [id]

产品 [id]

productRatings [id,value,user,product]

评论[id,product,user]

我想选择/并最终删除 productRatings,因为同一用户对该产品没有相关评论。也就是说,如果用户对产品进行了评分但未发表评论,则应删除该评分。

我相信我可以通过使用两个查询来实现这一点,首先:

SELECT user, product FROM productRatings

然后对于每一行:

    SELECT COUNT(*) FROM comments WHERE product=productRatings.product AND user=productRatings.user

然后是类似的东西

    if $queryAbove==0 : DELETE FROM productRatings WHERE id=productRatings.id

我想通过 JOIN 解决这个问题,并通过示例学习更多,而不是深入研究 JOIN 教程。

最佳答案

您只需要 productratings 和 comments 表 - 以下工作:

delete pr
from productratings pr
left join comments c
  on pr.userid = c.userid
  and pr.productid = c.productid
where c.productid is null

这里有一个演示:http://sqlfiddle.com/#!9/89575/1

关于php - mysql select/delete using join over 四个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799692/

相关文章:

php - 使用ajax将字段提交到数据库

php - 如何排除 Mecab 解析器功能障碍

sql - 大型数据列表的微服务和连接

linux - 如何使用 bash 加入两个文件并删除重复项?

php mysql 多重结果

php - 如何从爆炸中删除空格

php - 将 PHP 对象转换为关联数组

mysql - SQL IN () 包含 NULL 值

mysql - 比较两个相同的表 MySQL

sql - 使用条件和聚合函数连接