0

我有一个看起来像这样的数据库。

width | 10 | 20 | 30 | 40
----------------------------
  10  | $2 | $3 | $4 | $5
  20  | $3 | $4 | $5 | $6
  30  | $4 | $5 | $6 | $7
  40  | $5 | $6 | $7 | $8

顶行是列名。如果给我两个数值,我将如何提取货币价值?

或者将这些数据重新组织成新列的最简单方法是什么?

编辑:

列名中的数字是高度,宽度列中的数字是宽度。

如果我要插入数字 10 代表高度和 20 代表宽度,我希望 3 美元是我的结果。

谢谢!

4

3 回答 3

1

尝试这个 :

// assert $height column exists before the query
$sql = "select {$height}
        from table
        where width = :b_width";
于 2013-04-18T10:14:13.563 回答
0

最好的方法是使用标准化设计重构您的数据库。

table_1 :高度,包含一个包含您拥有的高度的列

table_2 :宽度,包含具有您拥有的宽度的单列

table_3:h_w_values,包含 3 列:1.height,2.width,3.value 对

这是标准化的,易于扩展为 N 个高度和 M 个宽度。可选:考虑一个 table_4 的可能值(假设您的包裹有固定关税,或其他)并将 table_3 更改为(高度、宽度、关税 ID)

于 2013-04-18T10:13:35.900 回答
0

我想你正在寻找这样的东西:

SELECT
  CASE WHEN @height=10 THEN height10
       WHEN @height=20 THEN height20
       WHEN @height=30 THEN height30
       WHEN @height=40 THEN height40
   END value
FROM yourtable
WHERE
  width=@width

在此处查看小提琴。

于 2013-04-18T10:08:51.313 回答