2016-03-24 13 views
0

IDフィールドが共通する2つのテーブル(プロファイルとロケーション)があります。各表は、同じサーバー上の別個のデータベース上にあります。私は各テーブルから列を表示する必要があります。プロファイルテーブルには、50個のレコードがあり、ロケーションテーブルの50個の一致するレコードとともに表示する必要があります。ここに私のクエリです:SQL Joinを使用して2つのテーブルのデータを表示

SELECT a.id, a.city, b.state FROM profile a JOIN Location b on a.id=b.id 

私は50以上のレコードが返されます。クエリからb.stateを削除すると、50レコードが返されます。 b.stateをクエリに追加すると、適切ではないものがあります。返される必要がある50州は、2都市間の共通IDに基づいて、プロファイルテーブルの各都市に関連する州でなければなりません。

プロフィール表データ:

リスト項目

プロフィール表データ: ID |市 1 | Chicag 2 |マイアミ 3 |デトロイト

状態表データ: ID |状態|人口 1 |イリノイ| 10MM 2 |フロリダ| 20MM 3 |ミシガン| 5MM 4 |バージニア州| 7MM 5 | Louisi ana | 3MM

StateテーブルとPopulationカラムを示すIDに基づいて、Stateテーブルに一致するものをProfileテーブルに表示します。

+2

をしてください[編それを両方のテーブルのサンプルデータと、そのサンプルから取得したい結果を含めます。 –

+0

@ sa-meeh以下の「回答」では、あなたが質問で提供したデータに基づいて結果を提示しています。しかし、明らかにあなたは別の結果を探しています。代わりにあなたが期待していたことを理解するのを助けてください。 – Ralph

+0

こんにちは@Ralph。私は両方のテーブルのフィールドの組み合わせを表示したい。たとえば、ID、市区町村および州。両方のテーブルのIDが一致する場合、一致するIDに基づいて都市とそれに関連する州の一致が表示されます。私のクエリは多くの結果を返します。プロフィールテーブルには50レコードしかありません。クエリは、IDがStateテーブルのIDと一致する50個のレコードのみを返します。 –

答えて

0

これが答えたが、サンプルデータのフォーマットを使用するだけで簡単にではありません。

declare @Profile table 
    (
    id int identity(1, 1) 
      primary key 
      not null, 
    City nvarchar(20) 
    ) 

insert into @Profile 
values (N'Chicago'), 
     (N'Miami'), 
     (N'Detroit') 

declare @State table 
    (
    id int identity(1, 1) 
      primary key 
      not null, 
    State nvarchar(20), 
    Population nvarchar(10) 
    ) 

insert into @State 
values (N'Illinois', N'10MM'), 
     (N'Florida', N'20MM'), 
     (N'Michigan', N'5MM'), 
     (N'Virginia', N'7MM'), 
     (N'Louisiana', N'3MM') 

select a.id, 
     a.City, 
     b.State 
from @Profile a 
join @State as b 
on  a.id = b.id 
0

あなたは、内側が非マッチ(あなたの例がないではない細部これに参加の種類をフィルタリングする参加必要があります使用):

SELECT a.id, a.city, b.state 
FROM [profile] a 
INNER JOIN Location b on a.id=b.id 

また、あなたがこの試みることができることを意味するだけでなく、重複があるかもしれません:

SELECT DISTINCT a.id, a.city, b.state 
FROM [profile] a 
INNER JOIN Location b on a.id=b.id 
関連する問題