【发布时间】:2011-01-24 14:28:20
【问题描述】:
这是我在这个论坛上的第一篇文章,我当然希望得到大师的帮助:)
我想要实现的是我的 db 表中有 7 列。一个是主键,其余 6 个是整数列。现在我的应用程序将允许用户输入 6 个值。我想将用户输入的 6 个值与这 6 个整数列进行比较,如果任何行中的 3 列或更多列与用户输入的匹配,则返回该表的主键..
我尝试过使用查询、游标、嵌套循环,但我仍然无法达到我的结果..
任何帮助将不胜感激!
谢谢
更新
数据库表结构.. 我正在输入2,3,7,11,45,65。返回的行数应为 5。例如..
UID A1 A2 A3 A4 A5 A6
-----------------------
1 2 3 4 5 6 7
2 2 3 4 55 56 57
3 65 11 45 66 67 68
4 45 7 11 99 98 97
5 7 7 7 7 7 7
6 7 7 7 7 7 7
7 8 8 8 8 8 8
8 8 8 8 8 8 8
9 45 45 0 3 1 2
10 65 7 4 0 0 0
返回的 ID 应为 1,3,4,9,10
【问题讨论】:
-
你是如何生成主键的?
-
重要问题:您是在尝试将输入匹配到相应的列(组合锁)还是任何输入都可以匹配任何列?换句话说,1,2,3,4,5,6 匹配 6,5,4,7,7,7 是 3 次还是 0 次?另外,是否允许重复数字或者这更像是基诺问题?
-
任何输入都可以匹配数据库中的任何列..
-
您只输入了 5 个数字。你错过了一个吗?这将有助于理解您的回答以查看所有数据。另外,我假设您不想匹配多个匹配项。我的意思是,如果用户在他的 6 个号码中输入 7 一次,您只想匹配 UID 5 和 6 一次,而不是 6 次,对吗?如果用户输入 2,2,2,2,2,2 会怎样?您是否只想与任何个人 2 匹配一次,因此第 1 行和第 2 行不会成功?
-
嗨 nycdan.. 不,你错了.. 上面给出了 db 表.. 假设我在查询中将 2,3,45,7,11,65 作为 6 个值发送..现在,如果您看到 db 表,那么它应该返回 uid 1,3,4,9,10.. 原因?他们都有至少 3 个输入的数字。不应提取 777777 行.. 因为它只包含一个数字 7 6 次而不是 3 个不同的列.. 你明白了吗?
标签: c# asp.net sql-server vb.net