【发布时间】:2014-01-23 15:33:57
【问题描述】:
基本上,这个想法是人们根据长度过滤搜索结果。但是,长度存储在文本字段中,因为这可能因项目而异。一个项目可能是 16.20 米,另一个可能是 8.1m。
如何开始?从数据库中获取所有可能的值,将它们更改为过滤的格式(仅将所有内容解析为数字,逗号分隔?),获取关联的 ID,然后仅显示与这些 ID 相关的所有信息,或者是否存在一种我还没有找到的方法?
亲切的问候。
编辑:标准化格式是一种解决方案,但我不能在这种情况下应用。我不允许这样做。情况变得更糟 - 过滤可以同时具有最小值和最大值。最小值:4 和最大值:8 应该显示这些长度之间的所有内容。 6.1m,7.82 米,5.
【问题讨论】:
-
您应该规范化数据,这意味着可能将值和测量单位分成两个字段。
-
我真的应该,而且我真的希望我可以。然而,这是别人的项目,我不能也不允许改变它,很遗憾。
-
您不必更改核心表,但您可以创建一个正确执行此操作的镜像表,然后在镜像表上进行搜索。可以每小时/每天从头开始重新创建镜像表(取决于大小和更新频率),或者,如果您在损坏的表中有
updated_at列,则可以使其几乎每 10 分钟同步一次。
标签: php mysql filter filtering