Mysql group by 同类产品根据关系如果有的话
Posted
技术标签:
【中文标题】Mysql group by 同类产品根据关系如果有的话【英文标题】:Mysql groupBy similar products based on relationship if there is any 【发布时间】:2018-08-23 15:15:48 【问题描述】:我如何通过 product_id 对transactions
进行查询,但我需要单独显示带有选项的产品。
例如在表中transactions
如果我有:
ProductID Quantity Price
1 1 10
1 1 10
1 1 15 (in transaction_options this has option green(price 2,5),yellow(price 2,5))
1 1 15 (in transaction_options this has option red(price 2,5),blue(price 2,5))
我希望结果是:
ProductID Quantity Price
1 2 10
1 1 15 (this has option red(price 2,5),blue(price 2,5))
1 1 15 (this has option green(price 2,5),yellow(price 2,5))
问题是它们都有相同的product_id,价格可以相同但选项不同。
这是表格结构:
products
与 id,name,price
options
与 id,name,price
transactions
与 id,product_id,quantity,price
transaction_options
和 id,transaction_id,option_id
(transactions
和 options
之间的关联表
在transactions
中,我插入基于选项计算的price
(如果有的话):
product.price+[option.price] = transaction.price
【问题讨论】:
那么一个产品可以有一个基础价格和4个期权价格?并且期权价格总是一样的?并且您的交易数量只有 1?我认为您需要添加更多细节,包括来自产品和选项的示例数据作为入门。 期权可以无限,期权价格也不一样。我的示例中的选项价格相同,表明我不能groupBy
price,因为可能有不同的选项。
我不相信这是可能的,因为底价 * 数量的组合可能会产生与底价 + 期权价格 * 数量相同的值。
【参考方案1】:
Select * from (select col1, col2 from myTable where myOptions is not null) union all (select col1, count(col2) as col2 from myTable where myOptions is null group by col1);
【讨论】:
以上是关于Mysql group by 同类产品根据关系如果有的话的主要内容,如果未能解决你的问题,请参考以下文章
mysql group by limit (根据某一分组,取固定条数) 实现
Mysql 在没有 SUBQUERY 的同一查询中使用 GROUP BY 和 SUM(没有 group by)。可能的?
用group by语句时,字段很多并且数据量也很大的情况如何解决?