2012-04-05 44 views
0

我有一個人與一些電子代碼之間的多對多關係。帶有代碼的表格具有代碼本身以及代碼的文本說明。一個典型的結果從查詢中設置可能會(也有包含「破」,所以我覺得這是更好的搜索文字說明,而不是添加了一堆OR的每一個代碼中的許多代碼。)使用LIKE結合過濾結果的方法

id# text of code 
1234 broken laptop 
1234 broken mouse 

目前獲得這樣的結果集的最好方法是使用LIKE%broken%過濾器。在不改變文字描述的情況下,有什麼辦法可以只返回broken的代碼實例嗎?所以在上面的例子中,查詢將只返回1234和破碎的鼠標或破碎的筆記本電腦。在這種情況下,返回的並不重要,我要查找的是在該人員的任何代碼的文本描述中出現「破碎」。

我目前的解決方案是創建一個將返回

`id# text of code 
1234 broken laptop 
1234 broken mouse` 

,並使用SELECT DISTINCT ID#而查詢視圖來獲取各只有一個實例的視圖。

編輯ACTUALLY QUERY

SELECT tblVisits.kha_id, tblICD.descrip, min(tblICD.Descrip) as expr1 FROM tblVisits inner join icd_jxn on tblVisits.kha_id = icd_jxn.kha)id inner join tblICD.icd_fk=tblICD.ICD_ID group by tblVisits.kha_id, tblicd.descrip having (tblICD.descrip like n'%broken%')

+0

只是刪除了'tblICD.descrip'並添加GROUP BY,使它象我的回答工作。 – GavinCattell 2012-04-05 18:28:48

回答

2

你可以使用下面的查詢來選擇的MIN碼。這將確保每個ID只有文本。

SELECT t.id, MIN(t.textofcode) as textofcode 
FROM table t 
WHERE t.textofcode LIKE '%broken%' 
GROUP BY t.id 

更新實際查詢:

SELECT tblVisits.kha_id, 
    MIN(tblICD.Descrip) 
FROM tblVisits 
INNER JOIN icd_jxn ON tblVisits.kha_id = icd_jxn.kha)id 
INNER JOIN tblicd ON icd_jxn.icd_fk = tbl.icd_id 
WHERE tblICD.descrip like n'%broken%' 
GROUP BY tblVisits.kha_id 
+0

我編輯原始帖子以包含我的查詢。當我運行它的時候,我仍然得到了一個人的ID號的多次出現,它仍然爲與它們相關聯的每個代碼返回一個ID號。 – wootscootinboogie 2012-04-05 18:28:40

+0

第二次加入是tblicd ON icd_jxn.icd_fk = tbl.icd_id – wootscootinboogie 2012-04-05 18:50:07