如何使用group concat获得第三个表计数

时间:2015-06-27 18:25:18

标签: mysql mysqli count group-concat jointable

我有三张桌子 1)tbl_product基表//存储产品信息。

id int(11) unsigned
product_type_id int(11) unsigned
product_image   varchar(255)
title   varchar(255)
description text
price   float(8,2)
discount_price  float(8,2)
status  tinyint(1)
created_at  datetime
updated_at  datetime

2)tbl_product_review //存储每件产品的评论。

id  int(10) unsigned
product_id  int(10) unsigned
title   varchar(255)
description text
star_rating int(1)
status  int(1)
created_at  int(10)

3)tbl_wishlist //存储用户的愿望清单详细信息表示当用户将任何产品添加到他/她的愿望清单中时,该表中保存的条目

id  int(11) unsigned
product_id  int(11) unsigned
user_id int(11) unsigned
status  tinyint(1) unsigned
created_at  datetime

这些是我的表架构。我希望根据产品ID使用group concat获取用户的id。意味着如果产品ID为1,那么所有用户的id就像这样(1,3,4,5)。接下来是,我想要每个产品的产品评论总数。例如,如果用户ID为1,则产品编号为1或0(如果有或没有)。

其实我想要这种类型的输出

id  product_type_id title               description              price  discount_price       product_image      users   total_review
1   1               Product one         Product one description  786       50               product.jpg        1,2         2

我希望通过单个查询来完成此操作。我不希望在启动循环之后获取前半部分信息,而不是获取下半部分信息。我想你理解我的问题。

1 个答案:

答案 0 :(得分:1)

您可以尝试如下。您可以从相应的表中获取已连接的用户列表和计数,然后可以JOIN使用基本product表来获取合并结果。

select p.*,XX.total_review,XXX.user_list
from tbl_product p join (

select product_id, count(*) as total_review
from tbl_product_review
grup by product_id
) XX on product_id = XX.product_id
join (
select product_id,group_concat(user_id) as user_list
from  tbl_wishlist
group by product_id
) XXX on p.product_id = XXX.product_id