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

时间:2016-05-07 02:20:04

标签: mysql

我有两张桌子。

for offset in {0..75..25}; do
  /usr/local/bin/virtual_process "$(( baseServerId + offset ))"
done

数据是这样的

表A

Table Name : Field Name

table A : ID, product_ID

table B : product_ID, product_type,product_num

表B

+++++++++++
id + product_id
+++++++++++
1  + apple
2 + orange
+++++++++++

我可以得到像

这样的结果吗?
+++++++++++++++++++++++++++++++
product_id + product_type + product_num
+++++++++++++++++++++++++++++++
apple + red + 10
apple + blue + 20
orange + red + 5
orange + blue + 15
+++++++++++++

2 个答案:

答案 0 :(得分:0)

不要混淆,首先,表A应该有:id + product-name。表B的product-id必须引用表A的id。为此,两个字段必须保持相同的格式。例如,整数。所以你的表B看起来如下。

product_id + product_type + product_num

1 + red + 10

1 + blue + 20

2 + red + 5

2 + blue + 15

要获得您想要的东西,您可以尝试:

选择唯一的产品名称,B.product-num为red-num,C.product-num为蓝色数字,B为B,B为C,A,其中A.id = B.product-id和A.id = C.product-id和B.product-type =" red"和C.product-type =" blue&#34 ;;

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

答案 1 :(得分:0)

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

你可以这样做;)

SQL Fiddle

<强>模式

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

<强> Results

| product_id | red_num | blue_num |
|------------|---------|----------|
|      apple |      10 |       20 |
|     orange |       5 |       15 |

您可以查看MySQL pivot table