繁体   English   中英

mySQL使用表的值作为字段来获取查询

[英]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看起来如下。

product_id + product_type + product_num

1 +红+ 10

1 +蓝+ 20

2 +红+ 5

2 +蓝+ 15

为了得到你想要的,你可以尝试:

我没有测试过,因为我没有运行mysql服务器。 希望它有效。 如果它不起作用,删除唯一,你可能得到类似于你需要的东西。

好的,这是典型的表格枢轴问题。

你可以这样做;)

SQL小提琴

架构

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM