[英]mySQL using value of a table as a field to get query
我有两张桌子。
Table Name : Field Name
table A : ID, product_ID
table B : product_ID, product_type,product_num
数据是这样的
表A.
+++++++++++
id + product_id
+++++++++++
1 + apple
2 + orange
+++++++++++
表B.
+++++++++++++++++++++++++++++++
product_id + product_type + product_num
+++++++++++++++++++++++++++++++
apple + red + 10
apple + blue + 20
orange + red + 5
orange + blue + 15
+++++++++++++
我可以得到像这样的结果吗?
++++++++++++++++++++++++++++++++++++++++++
product_id + red_num + blue_num
++++++++++++++++++++++++++++++++++++++++++
apple + 10 + 20
++++++++++++++++++++++++++++++++++++++++++
orange + 5 + 15
不要混淆,首先,表A应该有:id + product-name。 表B的product-id必须引用表A的id。为此,两个字段必须保持相同的格式。 例如,整数。 所以你的表B看起来如下。
1 +红+ 10
1 +蓝+ 20
2 +红+ 5
2 +蓝+ 15
为了得到你想要的,你可以尝试:
我没有测试过,因为我没有运行mysql服务器。 希望它有效。 如果它不起作用,删除唯一,你可能得到类似于你需要的东西。
好的,这是典型的表格枢轴问题。
你可以这样做;)
架构 :
CREATE TABLE product
(`product_id` varchar(6), `product_type` varchar(4), `product_num` int)
;
INSERT INTO product
(`product_id`, `product_type`, `product_num`)
VALUES
('apple', 'red', 10),
('apple', 'blue', 20),
('orange', 'red', 5),
('orange', 'blue', 15)
;
查询 :
SELECT
product_id,
SUM(IF(product_type = 'red', product_num, 0)) AS red_num,
SUM(IF(product_type = 'blue', product_num, 0)) AS blue_num
FROM product
GROUP BY product_id
结果 :
| product_id | red_num | blue_num |
|------------|---------|----------|
| apple | 10 | 20 |
| orange | 5 | 15 |
你可以看看MySQL数据透视表 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.