0

私は、人といくつかの電子コードの間に多対多の関係を持っています。コードの表には、コード自体と、コードの説明文が含まれています。クエリからの典型的な結果セットは次のようになります (「壊れた」を含むコードがたくさんあるので、すべてのコードに多数の OR を追加するよりも、テキストの説明を検索する方がよいと思います)。

id#    text of code
1234   broken laptop
1234   broken mouse

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

現時点での私の解決策は、返すビューを作成することです

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

SELECT DISTINCT ID#ビューのクエリ中に使用して、それぞれのインスタンスを 1 つだけ取得します。

実際にクエリを編集

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%')

4

1 に答える 1

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
于 2012-04-05T18:21:22.603 に答える