2013-01-08 146 views
-1

我有3个字段:LastName,MRnumber和SSN。所有3个都是患者记录的一部分。现在用户可以搜索1,2或全部3个关键字。 MR号码或SSN是唯一的,每个号码将检索一个唯一的记录。但是这些值并不总是存在。例如,病人不想给他的SSN。请记住,会有很多记录,这是做到这一点的最佳方式?我使用MS Access和Delphi作为前台(如果有问题)。SQL中的多关键字搜索

+0

谢谢你的edit..it是凌晨1点..即时通讯累。 – Sardukar

+0

目前尚不清楚以下内容应包含哪些行为:*'MRnumber或SSN是唯一的,它们每个都将检索一条独特的记录。但是,这些值并不总是存在的。'*例如,如果用户在搜索字段中同时输入了MRNumber和SSN,你会在你的查询中使用'and'ed或'or'ed吗?您能否添加示例,说明数据库中的各种数据组合以及输入的搜索词,然后显示每种情况下的结果?最后但并非最不重要的:** [你有什么尝试?](http://whathaveyoutried.com)** –

回答

1

在解释你的问题如下:

每个记录有
姓氏,不是唯一的,始终存在
MRNumber,独特的,可选
SSN,独特的,可选

你搜索一下( (姓氏和SSN)或(姓和MRNumber和SSN)

但是由于MRNumber和SSN都是唯一的最后一个搜索ch是多余的。

你不告诉使用你正在使用什么组件,所以只有通用答案是可能的。 假设你的Delphi应用程序做一些预处理,我会做:

If MRNumber given 
    search on (LastName and MRNumber) 
else 
    If SSN given 
    search on (LastName and SSN) 
    else 
    message(Insufficient data) 
+0

好,所以你会检查每个单独的字段..我想可能有一个更简单的SQL语句。我回到了3种可能的方式: A)3个输入字段,每个字段都有自己的搜索按钮。 B)组合框,称为搜索,并让用户选择:C)3个输入字段,我将对搜索进行分级。 谢谢我想我会使用组合框..它可能是更优雅的方式,更简单的代码。 Thnx再次。 – Sardukar

+0

但我仍然好奇:说你有以下搜索选项:名字,年龄和性别作为单独的txt字段和单个搜索按钮..你会如何构建查询?用户可以使用所有的搜索字段来检索单个记录或使用组合来检索多个记录?换句话说,您使用的搜索词越多,搜索时就越具体。 – Sardukar

+0

如果它变得非常复杂,我会在代码中构建SQL语句:SELECT ... FROM ... WHERE,然后根据用户选择/填充的内容添加条件。然后将语句放入查询组件并执行。 –