在查询中对自定义属性进行分组

时间:2011-03-03 15:36:07

标签: coldfusion coldfusion-8

我有一个应用程序,允许“联系人”完全自定义。我这样做的方法是让管理员设置联系人允许的所有字段。我的数据库如下:

  

联系人

     
      
  • ID
  •   
  • 活性
  •   
  • lastactive
  •   
  • created_on
  •   
     

字段

     
      
  • ID
  •   
  • 标签
  •   
     

FieldValues

     
      
  • ID
  •   
  • fieldid
  •   
  • 的ContactID
  •   
  • 响应
  •   

因此联系表只会告诉他们是否有效以及他们的标识符; fields表只保存字段和标识符的标签,而fieldvalues表实际上是联系人的数据(名称,地址等)

所以这个设置对我来说还不错,直到现在。客户希望能够提取累积报告,但要说明某个城市中所有联系人的状态。实际上,数据必须如下所示

  

加利福尼亚 (来自字段表)

     
      
  • Costa Mesa - (来自字段表) 5 - (在字段值表中计算)
  •   
  • Newport 2
  •   
     

康涅狄格

     
      
  • Wallingford 2
  •   
  • 克林顿2
  •   
  • 柏林5
  •   

状态字段可能是id 6,城市字段可能是id 4.我不知道我是否刚刚看过这种代码方式以便想出来或者是什么,

可以在https://s3.amazonaws.com/davejlong/Contact.sql

找到用于创建这三个表的SQL

1 个答案:

答案 0 :(得分:0)

你有一个Entity Attribute Value(EAV)模型。使用fieldfieldvalue表仅搜索 - WHERE caluse。然后通过以序列化格式将完整实体的数据保留在主表(例如Contacts.data)中的CLOB中来使生活更轻松(WDDX对此有利)。阅读data列,反序列化,并在服务器端使用。这比你需要做的无数连接要容易得多,否则从EAV设置中重现完全水合的实体。