2012-04-05 18 views
0

私は人といくつかの電子コードの間に多かれ少なかれたくさんの関係を持っています。コードを含むテーブルには、コードそのものとそのコードの説明テキストがあります。クエリから設定典型的な結果は、(私はそれがテキスト記述を検索するのではなく、すべてのコードのためのORの束を追加する方が良いでしょうように感じるので、「壊れた」が含まれ、多くのコードがあります。)であるかもしれない現在LIKEを使用してフィルタリングされた結果を結合する方法

id# text of code 
1234 broken laptop 
1234 broken mouse 

このような結果を得るための最良の方法は、LIKE%broken%フィルタを使用することです。テキストの説明を変更せずに、brokenのコードのインスタンスを1つだけ返す方法はありますか?したがって、上記の例では、クエリは1234を返し、壊れたマウスOR壊れたラップトップを返します。このシナリオでは、どちらが返されるかは関係ありません。私が探しているのは、その人のコードのテキスト記述のいずれかに「壊れた」存在があることだけです。現時点では

私のソリューションは、

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

とそれぞれのインスタンスを1つだけ取得するビューを照会しながら、SELECT DISTINCT ID#を使用して返すビューを作成することです。

EDIT実際に問い合わせ

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

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

は、実際のクエリを更新しました。 – GavinCattell

答えて

2

あなたはMINコードを選択するには、以下のクエリを使用することができます。これにより、IDごとのテキストのみが確保されます。ただ、 `tblICD.descrip`を削除し、それが私の答えのように動作させるためにGROUP BYを追加

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#の複数の出現を取得しています、それは彼らがそれらに関連付けられているすべてのコードのための1つのID#を返しています。 – wootscootinboogie

+0

2番目の結合はtblicdです。ON icd_jxn.icd_fk = tbl.icd_id – wootscootinboogie

関連する問題