mysql rbar的情况

时间:2010-07-28 13:26:23

标签: mysql mysqldump

处理这种情况的最佳方法是什么?

我正在开发现成的软件,它将用户定义的字段名称作为一行存储在数据库中,而不是向表中添加新列。它看起来像这样:

   ID fieldName  fieldValue propertyId
    1 latitude   23.192     id_property1
    2 longitude -10.323     id_property1
    3 latitude   23.192     id_property2
    4 longitude -11.824     id_property2
    5 latitude   25.254     id_property3
    "                                   "

我需要根据fieldName和fieldValue的用户输入过滤此表,因此如果用户输入fieldName =“latitude”AND fieldValue =“23.192”,它将返回id_property1和id_property2。但是如果用户输入fieldName =“latitude”AND fieldValue =“23.192”AND fieldName =“longitude”AND fieldValue =“ - 10.323”,它将返回id_property1。

我在php中使用for循环做了一个方法,但是我担心它会在很多记录下陷入困境。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用自我加入:

SELECT p0.propertyId
FROM propsTable AS p0
JOIN propsTable AS p1 ON p1.propertyId=p0.propertyId
WHERE p0.fieldName='latitude' AND p0.fieldValue=23.192
AND p1.fieldName='longitude' AND p1.fieldValue=-10.323