0

現在、A、B、C の 3 つのテーブルを使用しています。

テーブル構造:ID、名前、年齢

B テーブル構造: ID、A.ID-> 外部キー、病院名

C テーブル構造: ID、A.ID->外部キー、薬剤名

したがって、A と B の関係は 1 対多であり、A と C の関係も同じです。

データベース内の何人の人物を検索するクエリを作成すると、実際には重複していない重複行が見つかりましたが、たとえば、次のような子テーブルを持つ 2 つの行があります: 1 人がテーブル B に 2 つのレコードを持っているため、結果は反映されません子テーブルにリンクされているため、一致したレコードの実際の数。

質問は:そのような場合に重複を防ぐ方法は?

4

1 に答える 1

0

Distinct またはサブクエリを使用できます。

SELECT DISTINCT a.ID, a.Name
FROM a
INNER JOIN b
ON a.ID = b.aID
WHERE b.Hospital = 123

または

WHERE b.Hospital IN ( 123, 456 )

また

SELECT a.ID, a.Name
FROM a
INNER JOIN (SELECT aID, Hospital FROM b) x
ON a.ID = x.aID
WHERE x.Hospital - 123

SELECT a.ID, a.Name
FROM a
WHERE a.ID 
IN ((SELECT aID FROM b WHERE Hospital = 123))
于 2012-04-23T08:51:04.450 に答える