计算另一个表中记录数的查询

超级摇滚

我有桌子merchants

merchant_id |  merchant_name  | ... |
-------------------------------------
      1     | merchant name 1 | ... |
      2     | merchant name 2 | ... |
      3     | merchant name 3 | ... |

产品表products

 product_id |  product_name  | ... |
------------------------------------
      1     | product name 1 | ... |
      2     | product name 2 | ... |
      3     | product name 3 | ... |

还有表likes_products

 like_id |  product_Id  | user_id |
-----------------------------------
    1    |      101     |   101   |
    2    |      102     |   102   |
    3    |      103     |   101   |

likes_merchants

 like_id |  merchants_Id  | user_id |
-----------------------------------
    1    |       107      |   101   |
    2    |       108      |   102   |
    3    |       109      |   101   |

bookmarks_products

 bookmark_id |  product_Id  | user_id |
---------------------------------------
       1     |      101     |   101   |
       2     |      102     |   102   |
       3     |      103     |   101   |

我提出了一个显示所有产品的请求,计算他们喜欢的数量。然后他看起来像现在授权产品的用户的用户,如果这个用户有产品标签,并显示truefalse

SELECT P.* , 
  COUNT(L.USER_ID) AS LIKES,
  (B.PRODUCT_ID IS NOT NULL) AS BOOKMARKS,
  (L.PRODUCT_ID IS NOT NULL) AS IS_LIKED
    FROM PRODUCTS AS P
      LEFT JOIN BOOKMARKS_PRODUCTS AS B ON (B.PRODUCT_ID = P.PRODUCT_ID)
      LEFT JOIN LIKES_PRODUCTS AS L ON (L.PRODUCT_ID = P.PRODUCT_ID)
        GROUP BY P.PRODUCT_ID, B.PRODUCT_ID, L.PRODUCT_ID
          ORDER BY P.PRODUCT_ID

我的问题是: 1) 我无法在书签中检查授权用户喜欢或喜欢的内容。如果任何来电者喜欢某个产品或为其添加书签,他将发布true.

2)我不明白他为什么把喜欢和书签的数量放在一起考虑。即:如果一个用户点赞并收藏了一个产品,然后点了一个赞,然后另一个用户收藏了这个产品,那么点赞就增加了,如果他喜欢这个产品,就会翻倍。

请帮助我了解我的问题

我希望收到什么:

 product_id |  product_name  | ... | LIKES | BOOKMARKS | IS_LIKED |
-------------------------------------------------------------------
      1     | product name 1 | ... |   1   |   false   |   true   |
      2     | product name 2 | ... |   0   |   true    |   true   |
      3     | product name 3 | ... |   5   |   false   |   false  |

但问题是,如果表中有来自用户的喜欢table, there are bookmarks from users in the,它会将它们汇总并输出正确的一半喜欢。

这是没有发生的情况GROUP BY

SELECT P.* , 
  (B.PRODUCT_ID IS NOT NULL) AS BOOKMARKS,
  (L.PRODUCT_ID IS NOT NULL) AS IS_LIKED
    FROM PRODUCTS AS P
      LEFT JOIN BOOKMARKS_PRODUCTS AS B ON (B.PRODUCT_ID = P.PRODUCT_ID)
      LEFT JOIN LIKES_PRODUCTS AS L ON (L.PRODUCT_ID = P.PRODUCT_ID)
          ORDER BY P.PRODUCT_ID
 product_id |  product_name  | ... | LIKES | BOOKMARKS | IS_LIKED |
-------------------------------------------------------------------
      1     | product name 1 | ... |   1   |   false   |   true   |
      1     | product name 1 | ... |   1   |   false   |   true   |
      3     | product name 3 | ... |   5   |   false   |   false  |

产品1被输入两次,因为它是在两个表likes_productsbookmarks_products

法米

您可以尝试以下-

select A.product_id,likes,
case when B.PRODUCT_ID IS NOT NULL then 'true' else 'false' end AS BOOKMARKS,
case when L.PRODUCT_ID IS NOT NULL then 'true' else 'false' end AS IS_LIKED
from
(  
SELECT P.PRODUCT_ID , 
  COUNT(L.USER_ID) AS LIKES,
  FROM PRODUCTS AS P
  LEFT JOIN LIKES_PRODUCTS AS L ON L.PRODUCT_ID = P.PRODUCT_ID
  GROUP BY P.PRODUCT_ID
)A 
LEFT JOIN BOOKMARKS_PRODUCTS AS B ON B.PRODUCT_ID = A.PRODUCT_ID
LEFT JOIN LIKES_PRODUCTS AS L ON L.PRODUCT_ID = A.PRODUCT_ID
order by A.product_id

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在另一个查询中查询以计算另一个表中的项目数量

来自分类Dev

通过计算列上的百分比来将记录插入到另一个表中的查询

来自分类Dev

MySQL从一个表中查询最新记录,但从另一个表中查询顺序

来自分类Dev

计算同一查询中另一个SQL表中的行

来自分类Dev

如何查询另一个表中的上一条记录?

来自分类Dev

在oracle中查询以从一个表中获取多个记录并输入另一个表

来自分类Dev

计算一个表中发生在另一个表中的最大日期前后的记录

来自分类Dev

如何在查询中从另一个表中获取记录?

来自分类Dev

从另一个表更新表中的记录

来自分类Dev

SQL查询-从一个表中选择全部,在另一个表中匹配记录

来自分类Dev

SQLite查询选择另一个表中不存在的所有记录

来自分类Dev

在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

来自分类Dev

MySQL查询可根据另一个表中的记录将记录插入表中

来自分类Dev

计算单个查询中另一个表的行数

来自分类Dev

查找不在另一个表中的记录

来自分类Dev

如何更新另一个表中的记录

来自分类Dev

在另一个表中查找丢失的记录

来自分类Dev

如何在子查询聚合中的最近时间记录的另一个表中查找记录

来自分类Dev

计算另一个表中的行

来自分类Dev

如何计算另一个表中的数据

来自分类Dev

使用Linq从另一个表中按记录数排序获取列表

来自分类Dev

SQL查询另一个表中的值

来自分类Dev

db2查询,该查询显示针对另一个表中的每个值重复的记录

来自分类Dev

计算与另一个记录关联的记录数量

来自分类Dev

Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

来自分类Dev

根据另一个表中的记录值将记录插入表中

来自分类Dev

根据另一个表中记录的值将记录插入表中

来自分类Dev

在一个表中计算ID,在另一个表中乘以值

来自分类Dev

用另一个表中的值在一个表中进行计算

Related 相关文章

  1. 1

    在另一个查询中查询以计算另一个表中的项目数量

  2. 2

    通过计算列上的百分比来将记录插入到另一个表中的查询

  3. 3

    MySQL从一个表中查询最新记录,但从另一个表中查询顺序

  4. 4

    计算同一查询中另一个SQL表中的行

  5. 5

    如何查询另一个表中的上一条记录?

  6. 6

    在oracle中查询以从一个表中获取多个记录并输入另一个表

  7. 7

    计算一个表中发生在另一个表中的最大日期前后的记录

  8. 8

    如何在查询中从另一个表中获取记录?

  9. 9

    从另一个表更新表中的记录

  10. 10

    SQL查询-从一个表中选择全部,在另一个表中匹配记录

  11. 11

    SQLite查询选择另一个表中不存在的所有记录

  12. 12

    在一个查询中从两个表中选择一个记录,并从另一个表中选择多个记录

  13. 13

    MySQL查询可根据另一个表中的记录将记录插入表中

  14. 14

    计算单个查询中另一个表的行数

  15. 15

    查找不在另一个表中的记录

  16. 16

    如何更新另一个表中的记录

  17. 17

    在另一个表中查找丢失的记录

  18. 18

    如何在子查询聚合中的最近时间记录的另一个表中查找记录

  19. 19

    计算另一个表中的行

  20. 20

    如何计算另一个表中的数据

  21. 21

    使用Linq从另一个表中按记录数排序获取列表

  22. 22

    SQL查询另一个表中的值

  23. 23

    db2查询,该查询显示针对另一个表中的每个值重复的记录

  24. 24

    计算与另一个记录关联的记录数量

  25. 25

    Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

  26. 26

    根据另一个表中的记录值将记录插入表中

  27. 27

    根据另一个表中记录的值将记录插入表中

  28. 28

    在一个表中计算ID,在另一个表中乘以值

  29. 29

    用另一个表中的值在一个表中进行计算

热门标签

归档