我有这张桌子ATTRIBUTE

id     name       um
12    capacity  MB;GB;TB


和这张桌子2:

id    id_attribute  id_product    name       value     um
 1        12         40        hdd maxtor     30       GB
 2        12         41        hdd maxtor     40       GB
 3        12         42        hdd y           1       TB


如何按以下顺序从table2中进行选择:30GB 40GB 1TB?

非常感谢!

最佳答案

您还将希望它也可以与MB一起使用,所以我要做的是创建一个函数来将两列值和UM转换为mb结果。因此,该函数会将mb的值乘以1,将gb的值乘以1000,将tb的值乘以1000000。然后,您可以订购该功能。但这并不是理想的性能,但是对于这种meta风格的数据库,我不确定究竟如何进行优化。

为了对此进行扩展,您可以为函数所使用的所有UM创建一个转换表,这样它就可以支持大小之外的其他事情。

例如,添加一个表

|Type  |UM |Magnitude|
______________________
|Size  |GB |1000     |
|Size  |MB |1        |
|Size  |TB |1000000  |
|Weight|g  |1        |
|Weight|kg |1000     |


然后,使该函数查找UM和幅度并将其相乘,将使您始终可以正确排序。

同样,您可以更改属性表以指向度量类型,而不用具有该属性表;分隔列表。

关于php - php,mysql选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2809277/

10-16 11:15