2013-01-08 173 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,然後根據用戶選擇/填充的內容添加條件。然後將語句放入查詢組件並執行。 –