2012-04-19 5 views
0

Я использую сервер SQL 2000. У меня есть две таблицы; таблица1 & таблица2. Таблица 1 имеет полное имя, адрес, телефон клиентов, а таблица 2 имеет только имена. Я хочу показать полное имя, адрес, телефон из таблицы1, имя которого имеет короткое имя (table2).Как работа в двух разных таблицах

Table1

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

TABLE2

Tony 
Smith 
Wonder 

Результаты, которые я хочу, чтобы это

Tony Gonzalez 
Adams Tony 
Albert Smith 
Andrew Wonder 

Можете ли вы помочь?

ответ

0

Надеюсь, у вас больше столбцов, чем только name в таблицах! Вам нужно будет присоединиться к таблицам, и из-за этого им нужно будет иметь столбец с одинаковым значением. Что-то вроде этого:

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 

вот как присоединиться к ним:

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

, если у вас нет столбца типа PK, чтобы присоединиться, вы можете попытаться присоединиться на подстроки, но вы больше всего вероятно, получат ошибки в ваших результатах из-за ложных совпадений. Когда ваши образцы данных имеют 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+'%' 

ВЫВОД:

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

(4 row(s) affected) 
+0

спасибо. '%' + b.Name + '%' было тем, что я искал. Большой!!! –

+0

@ Тони Ким, если этот ответ решил ваш вопрос, вы должны нажать на галочку в левой верхней части. Это будет означать, что это ваш правильный ответ. –

Смежные вопросы