【发布时间】:2014-02-04 20:45:06
【问题描述】:
.您好,我正在使用 Asp 和 SQL-Server,编写动态查询没有问题
我正在尝试编写一个搜索页面来搜索人。
我有 3 个相关的表: 请参阅我的表格图:http://tinypic.com/r/21159go/5
我想做的是设计一个搜索页面,人们可以搜索具有动态数量属性的用户。
示例: 认为名为“User1”的用户名在“UserAttributes”表中具有与他相关的 3 个属性,分别名为“Attr1”、“Attr2”和“Attr3”,而“User2”有 3 个名为“Attr1”、“Attr2”和“Attr4”的属性. 属性名称和其他与搜索功能无关的项目保存在“属性”表中。这是因为我想在多个用户之间关联一个属性。并且它们的值存储在“UserAttributes”表中。 好吧,有人想搜索“Attr1”和“Attr2”,并希望返回所有具有“Attr1”和“Attr2”且具有特定值的用户。
我需要一个查询来了解如何实现它。我可以用 asp.net 编写一个动态查询,所以如果有人请给我一个关于我带来的这个例子的查询,我将不胜感激
附:这不是我真正的数据库。我的真实数据库要复杂得多,并且有更多的字段和表格,但我只是把它剪掉了,只带了必要的项目。并且因为属性是非常动态的,它们不能嵌入到表格列中。
提前致谢
【问题讨论】:
-
这可以作为关系除法问题来解决。但大多数人会建议不要使用EAV 设计。
-
看看 Linq to Sql,它提供了一种优雅的方式来从您的应用程序中定义 where 子句。您还可以使用 Lucene 从您的数据中生成更可查询的索引。
标签: sql sql-server