我有一张表格,其中包含图像中的结构。帖子由具有相同 Lead_id 的所有行(总共 17 个字段)组成。也就是说,如何通过 field_value 过滤帖子?例如查询所有具有 field_value“ibague”的帖子。使用该表结构来做到这一点似乎很棘手。我正在考虑用主键 Lead_id 创建另一个表,并为 17 个字段中的每一个创建一列,并使用 mysql 中的一些可怕的游标或 php 中的一些循环导出数据,然后使表中的查询更容易询问。但使用这种方法,如果添加新字段,我将必须手动创建另一列,并在每次有人访问报告模块时导出新数据。我的程序员 friend 们有什么想法吗?
非常感谢。
最佳答案
这是数据库设计中的一个常见困境:灵 active 与易于搜索。您当前的表结构已针对灵 active 进行了优化。我们无法判断这是否适合您当前的应用程序,这是您必须做出的决定。
但是,您也可以在当前结构中搜索表单:
select lead_id
from yourtable
where `value`='ibague'
and form_id=1 and field_number=73 --not clear from your description if these conditions are needed
如果您需要给定潜在客户的所有字段值,其中其中一个字段与搜索条件相匹配,则将上述查询放入子选择中:
select * from yourtable t1
inner join (
select distinct lead_id
from yourtable
where `value`='ibague'
and form_id=1 and field_number=73) t2 on t1.lead_id=t2.lead_id
如果匹配还需要 form_id,则将其包含在子查询的选择列表和联接的 on
子句中。
如果你决定扁平化数据结构,那么就不需要复杂的游标,只需使用名为dynamic pivoting or cross tabulated query的技术即可。
关于mysql - 具有动态字段的查询表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688886/