如何使用 group concat 获得第三个 table 计数
how to get third table count with group concat
我有三个 tables。
1) tbl_product base table //存储产品信息。
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 // 存储用户的心愿单详细信息意味着当用户将任何产品添加到 his/her 心愿单时该条目保存在此 table
id int(11) unsigned
product_id int(11) unsigned
user_id int(11) unsigned
status tinyint(1) unsigned
created_at datetime
这些是我的 table 架构。我想根据产品 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
我想通过单个 query.I 执行此操作,不想在启动循环之后获取前半部分信息,而不是获取下半部分信息。我想你明白我的问题了。
您可以像下面这样尝试。您可以获得连接的用户列表并从各自的 table 计数,然后可以 JOIN
他们与基础 product
table 以获得合并结果。
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
我有三个 tables。
1) tbl_product base table //存储产品信息。
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 // 存储用户的心愿单详细信息意味着当用户将任何产品添加到 his/her 心愿单时该条目保存在此 table
id int(11) unsigned
product_id int(11) unsigned
user_id int(11) unsigned
status tinyint(1) unsigned
created_at datetime
这些是我的 table 架构。我想根据产品 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
我想通过单个 query.I 执行此操作,不想在启动循环之后获取前半部分信息,而不是获取下半部分信息。我想你明白我的问题了。
您可以像下面这样尝试。您可以获得连接的用户列表并从各自的 table 计数,然后可以 JOIN
他们与基础 product
table 以获得合并结果。
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