首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQl合并条件为true的行

MySQl合并条件为true的行
EN

Stack Overflow用户
提问于 2011-05-10 00:14:47
回答 2查看 235关注 0票数 1

我花了几天的时间试图解决这个问题,但只取得了有限的成功,我确信有一个简单的答案,但到目前为止,尽管进行了相当多的研究,但还是没有运气,我担心这个问题是因为我的SQL知识有限。

我有三张桌子。orders、orders_products和orders_products_attributes。

我尝试返回给定订单的结果表,显示所有匹配的orders_products,并合并存在的产品的orders_products_attributes行(有时没有属性)

我要说的是:

代码语言:javascript
复制
SELECT      oi.orders_id AS orderid
,           oi.products_id AS ItemNumber
,           oi.products_quantity AS Quantity
,           oi.final_price AS CostPerUnit
,       oi.products_name AS ItemTitle
,       concat (patt.products_options_id, '-', patt.products_options_values_id) AS OptionCodes
,       concat (patt.products_options, ': ', patt.products_options_values) AS OptionNames
FROM        orders_products oi
JOIN        orders o
ON      o.orders_id = oi.orders_id
LEFT JOIN   orders_products_attributes patt
ON          patt.orders_products_id = oi.orders_products_id AND patt.orders_id = oi.orders_id
WHERE       o.orders_status =2 AND oi.orders_id =10346
ORDER BY    ItemNumber

这将返回以下结果:

代码语言:javascript
复制
orderid ItemNumber Quantity CostPerUnit ItemTitle OptionCodes OptionNames

10346   140        1        319.9982    Item 1    3-5        Choice: A

10346   140        1        319.9982    Item 1    1-1        Choice2: B

10346   210        1        112.5000    Item 5    NULL       NULL

我正在尝试合并ItemNumber相同的行,将OptionCodes和OptionNames合并在一起,最终得到:

代码语言:javascript
复制
orderid ItemNumber Quantity CostPerUnit ItemTitle OptionCodes OptionNames

10346   140        1        319.9982  Item 1   3-5, 1-1    Choice: A, Choice2: B

10346   210        1        112.5000  Item 5    NULL         NULL

我一直在尝试GROUP_CONCAT这些,但只成功地合并了所有3行。

如果我太慢了,我很抱歉,但我就是不能继续前进。

蒂娅,安德鲁

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-10 00:26:22

您可以按order_products表的唯一键进行分组。因为我不确定这是什么,所以我只按Select子句中除使用Group_Concat的列以外的所有列进行分组。

代码语言:javascript
复制
Select oi.orders_id As orderid
    , oi.products_id As itemnumber
    , oi.products_quantity As quantity
    , oi.final_price As costperunit
    , oi.products_name As itemtitle
    , Group_Concat( Concat(patt.products_options_id, '-', patt.products_options_values_id) ) As optioncodes
    , Group_Concat( Concat(patt.products_options, ': ', patt.products_options_values) ) As optionnames
From orders_products oi
    Join orders o
        On o.orders_id = oi.orders_id
    Left Join orders_products_attributes patt
        On patt.orders_products_id = oi.orders_products_id 
            And patt.orders_id = oi.orders_id
Where o.orders_status =2 
    And oi.orders_id =10346
Group By oi.orders_id, oi.products_id
    , oi.product_quantity, oi.final_price, oi.products_name
Order By itemnumber
票数 0
EN

Stack Overflow用户

发布于 2011-05-10 00:27:00

您应该能够像您所说的那样使用GROUP_CONCAT,但是为了做到这一点,您还必须使用GROUP BY ItemNumber

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5939627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档