【问题标题】:mysql children in the same row of parentsmysql孩子在同一行父母
【发布时间】:2016-07-25 07:45:29
【问题描述】:

有没有办法让您在SqlFiddle 中看到的架构显示为:

SKU | size S | size M | size L | init_qty | qty

? 我试图使用 GROUP_CONCAT,但它不是我想要的。

这是我的查询

select sku, name, group_concat(taglie separator ';') as `Magazzino`
from
(
  select p.sku, p.name, concat(po.valuename, ':',
  group_concat(po.value separator ',')) as taglie
  from products p
  right join products_opt po
  on p.id = po.product
  group by p.sku
) tbl
group by sku;

有什么建议吗? 谢谢

【问题讨论】:

  • 您想对实体属性值数据集进行交叉表查询吗?这将导致一些丑陋的 SQL。但是,当唯一的值指标(qty、init_qty)在输出中表示为不同的列时,我不知道您希望在 sizeX 列中看到什么值。
  • 我期待的是:SKU | size S | size M | size L |demoprod | 2 | 1 | 1 |
  • 这与您在上面的问题中提出的完全不同。

标签: mysql group-concat nested-query


【解决方案1】:

您需要为两个id 添加AUTO_INCREMENT

SQLFiddle:

http://sqlfiddle.com/#!9/0bde6/2

所需的 SQL:

select 
    p.sku, 
    sum(po.value = 'S') as `size S`,
    sum(po.value = 'M') as `size M`,
    sum(po.value = 'L') as `size L`,
    po.product as demoproduct
from products p
right join products_opt po
on p.id = po.product
group by p.sku;

输出:

+-------+--------+--------+--------+-------------+
| sku   | size S | size M | size L | demoproduct |
+-------+--------+--------+--------+-------------+
| PROD1 |      1 |      1 |      1 |           1 |
| PROD2 |      2 |      1 |      2 |           2 |
+-------+--------+--------+--------+-------------+

【讨论】:

  • 是的,Dylan,您对 auto_increment 的看法是正确的。你小提琴的结果不是我所期待的
  • 您从未提及您的期望。我根据我的猜测更新了我的帖子...
  • 对不起迪伦,我的评论已经发表,但我还没有写完!我的评论似乎很粗鲁。我道歉。无论如何,非常感谢您的新查询。为什么要求和?谢谢你的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多