我有这张桌子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/