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,价格可以相同但选项不同。

这是表格结构:

productsid,name,price

optionsid,name,price

transactionsid,product_id,quantity,price

transaction_optionsid,transaction_id,option_idtransactionsoptions 之间的关联表

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语句时,字段很多并且数据量也很大的情况如何解决?

MySQL笔记-group by和聚合函数的使用

MySQL根据某字段分组(group by)之后再根据另外的字段排序(order by)

MySQL根据某字段分组(group by)之后再根据另外的字段排序(order by)