gpt4 book ai didi

MYSQL查询显示多个表中的产品数量

转载 作者:行者123 更新时间:2023-11-29 23:54:39 26 4
gpt4 key购买 nike

我有这样的 table

产品:

id_product  | product_name      | price

560 | AAA | 1500
561 | BBB | 1750

属性:

id_attr | id_product | size | qty

100 | 560 | S | 11

100 | 560 | M | 9

100 | 560 | L | 7

100 | 560 | XL | 21

如何显示

product_name | qty_S | qty_M | qty_L | qty_XL | qty_total | price

AAA | 11 | 9 | 7 | 21 | 48 | 1500

BBB | 0 | 0 | 0 | 0 | 0 | 1750

我尝试像这样进行查询:

select p.*, a.*,

sum(a.qty) as qty_total,

[how_to_display_query] as qty_S,

[how_to_display_query] as qty_M,

[how_to_display_query] as qty_L,

[how_to_display_query] as qty_XL,


FROM product p LEFT JOIN attr a
ON p.id_product = a.id_product
group by p.id_product;

==================================================

请帮助我,抱歉英语不好......谢谢

最佳答案

你想对结果进行透视..但是你不能在mysql中进行透视,因为它没有这个功能..所以你需要通过使用聚合和条件语句来“伪造”透视

这样做的方法是这样的.. MAX(CASE... ) SUM(CASE... ) 等等..也可以用 if MAX(IF. .. ) SUM(IF...).

SELECT p.product_name
SUM(a.qty) as qty_total,
MAX(CASE size WHEN 'S' THEN qty ELSE 0 END) as qty_S,
MAX(CASE size WHEN 'M' THEN qty ELSE 0 END) as qty_M,
MAX(CASE size WHEN 'L' THEN qty ELSE 0 END) as qty_L,
MAX(CASE size WHEN 'XL' THEN qty ELSE 0 END) as qty_XL,
p.price
FROM product p
LEFT JOIN attr a ON p.id_product = a.id_product
GROUP BY by p.id_product;

我在这里使用了 MAX() ,因为你似乎只得到一个数字。如果你想添加多个数量,那么你可以将 MAX 更改为 SUM

关于MYSQL查询显示多个表中的产品数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25432638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com