2016-07-10 8 views
0

最初は初心者ですので、これはおそらくとても簡単です。私はそれを理解することができませんでした。SQL Server - 重複のない異なるデータベースの複数のテーブルを結合する方法(単純なクエリ)

私の問題:私は560782行のデータを持つテーブルを1つ持っています。[これが完了したら結果になるはずです]。私はprovnameを取得するために別のテーブル(別のデータベース)に参加すると、私は582634行を取得します。私はそれが同じ供給者のために時々2つのエントリーがあるのでそれが分かっています。私は唯一のインスタンスの必要があります。大きな問題は、別のデータベースから3番目のテーブルを追加したときです。私は約20分後にそれを停止しなければならなかったので、正直なところ、何行戻ってきたのか分かりません。私はそれが580782x582634を複製していると確信しています。 DISTINCTを利用する方法がいくつかあると思いますが、どこでどのようにしたらよいか分かりません。

/* add prov name and plan name to data set for analysis */ 
SELECT 
    a.pcp_id, a.HMO_ID, a.MEM_MONTH, a.MEM_YEAR, a.patient_id, 
    b.prov_name, b.org_name, b.serv_area_name, a.PLAN_NUMBER, 
    c.PLAN_TYPE_NAME 
FROM 
    IDA.dbo.ida_Mem_Mo a 
INNER JOIN 
    AMG.dbo.tbl_AMG_PROV b ON a.pcp_id = b.prov_id 
LEFT JOIN 
    IDX.dbo.IDX_ENROLL c ON a.PLAN_NUMBER = c.PLAN_NUMBER 
WHERE 
    a.HMO_ID = 6 
    AND (a.MEM_DATE > CONVERT(DATETIME, '2014-12-31 00:00:00', 102)) 

答えて

0

私は、データの560782行を持って一つのテーブルを持っている[私は終わりだとき、これは 結果でなければなりません]。私はprovnameを取得するために別のテーブル(別の データベース)に参加すると、私は582634行を取得します。同じ供給者のために時々2つのエントリーがあるので私はそれが だと知っています。私は唯一 が提供するための単一インスタンスを必要とします。

はserv_area_name、あなたがそのテーブルAMG.dbo.tbl_AMG_PROVがprov_name、ORG_NAMEのすべての組み合わせのためのユニークなprov_idを持っている場合にのみ動作します(サブクエリ内prov_idの別個の値を取得する必要があることを処理するための

SELECT a.pcp_id, a.HMO_ID, a.MEM_MONTH, a.MEM_YEAR, a.patient_id, ..... 
FROM IDA.dbo.ida_Mem_Mo a 
inner join 
(
select distinct prov_id, prov_name, org_name, serv_area_name from 
AMG.dbo.tbl_AMG_PROV b ON a.pcp_id=b.prov_id 
) b ON a.pcp_id=b.prov_id 

同様に、他のテーブルIDX.dbo.IDX_ENROLL

ためしかし、私は、AMGのテーブルでは、さらに

+0

prov_nameをあなたを助けることができるようにスキーマとの関係を知っておく必要があり、いくつかの回はTWICを表示されますe;同一のprov_id物理的に異なるアドレス(他のすべては同じです)。私はあなたがスキーマを意味するのか分かりませんか?ごめんなさい。これはすべて私にとってとても新しいものです。 – Nikki

+0

なぜあなたは重複を取得しているのですか?そのため、いくつかのprov_idに1つ以上のエントリがあり、どちらを選択したいのですか?ルールを知る必要があります。テーブルレイアウト(スキーマ)を使用してこれを理解することができます。 - > create to - > fileのようにテーブル選択スクリプトテーブルを右クリックします。それを編集してフォーマットすることでメインポストに保存してコピーして貼り付けます。また、関連する列のサンプルデータを掲載する必要があります。ルールについて説明しますOTherwiseそれは非常に困難になるでしょう。 – objectNotFound

+0

ok。私は今オフィスから出ている。私は明日に戻ってきます。彼らは同じプロバイダであるので、正直なところ選択された行は重要ではありません。 – Nikki

関連する問題