2012-04-19 19 views
0

私はSQL 2000サーバーを使用します。 私は2つのテーブルを持っています。テーブル1 &テーブル2。 テーブル1にはフルネーム、住所、顧客の電話番号があり、テーブル2には名前がありません。 名前には短い名前(table2)が含まれているtable1のフルネーム、アドレス、電話を表示したいと考えています。2つの異なるテーブルでの操作と同じ

表1

Frank Wisely 
Albert Smith 
Tony Gonzalez 
Peter Nicholas 
Andrew Wonder 
Adams Tony 

表2

Tony 
Smith 
Wonder 

私が取得したい結果が

Tony Gonzalez 
Adams Tony 
Albert Smith 
Andrew Wonder 

であるあなたは助けてくださいことはできますか?

答えて

0

テーブルにname以上の列があることを願っています。テーブルを結合する必要があります。そのため、同じ値を共有する列を持つ必要があります。このような何か:あなたが参加するPK型の列を持っていない場合、あなたはストリングに参加しようとすることができます

select 
    a.* 
    FROM Table2   b 
     inner join Table1 a ON a.pk=b.pk 

、ほとんどあなた:ここ

table1 
------ 
PK Name 
-- ---------------- 
1 Frank Wisely 
2 Albert Smith 
3 Tony Gonzalez 
4 Peter Nicholas 
5 Andrew Wonder 
6 Adams Tony 

table2 
------ 
PK Name 
-- ---------------- 
2 Smith 
5 Wonder 
6 Tony 

がそれらを結合する方法であります誤った一致のために結果にエラーが発生する可能性があります。サンプルデータに6行のデータがある場合は、すべて正常に見えますが、ジョンスミス、紙幣スミス、マイクスミス、ジョンブラウン、マイクブラウンの場合はどうなりますか?あなたはどうやってジョンを見つけるのですか?あなたはLIKEを使ってテーブルに参加することができますが、これは奇妙なことです。

このクエリは、あなたが求めているものを行います。

select 
    a.* 
    FROM Table2   b 
     inner join Table1 a ON a.Name like '%'+b.Name+'%' 

作業例を:

create table Table1 (name varchar(100), junk varchar(5)) 
insert into Table1 values ('Frank Wisely','aaa') 
insert into Table1 values ('Albert Smith','bbb') 
insert into Table1 values ('Tony Gonzalez','ccc') 
insert into Table1 values ('Peter Nicholas','ddd') 
insert into Table1 values ('Andrew Wonder','eee') 
insert into Table1 values ('Adams Tony','fff') 

Create table Table2 (name varchar(100)) 
insert into Table2 VALUES ('Tony') 
insert into Table2 VALUES ('Smith') 
insert into Table2 VALUES ('Wonder') 


select 
    a.* 
    FROM Table2   b 
     inner join Table1 a ON a.Name like '%'+b.Name+'%' 

OUTPUT:

name    junk 
---------------- ----- 
Albert Smith  bbb 
Tony Gonzalez ccc 
Andrew Wonder eee 
Adams Tony  fff 

(4 row(s) affected) 
+0

本当にありがとうございました。 '%' + b.Name + '%'は私が探していたものでした。すばらしいです!!! –

+0

@Tony Kim、この回答があなたの質問を解決した場合は、その左上のチェックマークをクリックする必要があります。これはあなたの正解であることを示します。 –

関連する問題