。我正在使用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写一个动态查询,所以如果有人请给我一个查询我带来的这个例子,我会很感激
P.S。这不是我真正的数据库。我真正的数据库要复杂得多,并且有更多的字段和表格,但我只是剪切它并只带来必要的项目。因为属性非常动态,所以它们不能嵌入表列中。
提前致谢
答案 0 :(得分:0)
根据您的数据库图表,您的代码将是这样的
<强>更新强>
SELECT u.*
FROM users AS u
LEFT OUTER JOIN UserAttributes AS ua1
ON u.USER_ID = ua1.USER_ID
LEFT OUTER JOIN UserAttributes AS ua2
ON u.USER_ID = ua2.USER_ID
WHERE (
ua1.attribute_id = 'att1'
AND ua.attribute_value = 'MyValue' )
AND (
ua2.attribute_id = 'att2'
AND ua.attribute_value = 'MyValue2' )
在where子句中,您将指定attirbute_Id以及您期望的值。不仅仅是决定是否要限制用户使所有值匹配或只是其中一个,在这种情况下,在语句之间修改AND
为OR