我有一个看起来像这样的数据库。
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美元成为我的结果。
谢谢!
答案 0 :(得分:1)
试试这个:
// assert $height column exists before the query
$sql = "select {$height}
from table
where width = :b_width";
答案 1 :(得分: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
请参阅小提琴here。
答案 2 :(得分:0)
最好的方法是使用规范化设计重构数据库。
table_1:高度,包含一个具有高度的列
table_2:widths,包含一个具有宽度的列
table_3:h_w_values,包含3列:1.height,2.width,3.value
这是标准化的,易于扩展N个高度和M个宽度。 可选:考虑table_4的可能值(假设你有你的包的固定关税,或者其他)并将table_3更改为(height,width,tariff_id)