2013-12-08 4 views
2

У меня есть две таблицы:Вставка данных в другой таблице на основе некоторых критериев

  • Клиент: ClientID, LATT, длинные
  • Регион: RegionId, LATT, длинные

Я хочу передать Regionid от Region до Client, где сопоставляются latt и long.

Вот мой код. Я понятия не имею, что делать:

INSERT INTO Client (Region) 
SELECT Region.Regionid 
FROM Region 
INNER JOIN Client ON Client.Latt = Region.Latt 
    AND Client.Long = Region.Long 
WHERE Client.Latt = Region.Latt 
    AND Client.Long = Region.Long 

Должен ли я создать Region столбец в таблице Client первым?

Любые идеи оцениваются!

ответ

1

Да. Вы должны создать столбец Регион в клиенте первый:

ALTER TABLE client ADD region int; 

Изменить Int на что-то другое, если RegionId в таблице регио имеет другой тип

Тогда вы, вероятно, хотите обновить вместо вставки

UPDATE c 
SET c.region = r.regionId 
FROM client c 
INNER JOIN region r ON c.latt = r.latt AND c.long = r.long 

После UPDATE вы можете опустить latt и long столбцы, чтобы ваши таблицы нормализованы

sqlfiddle demo

+0

спасибо. Это сработало. Я увеличу вашу репутацию, как только у меня хватит репутации, чтобы сделать это – Ulugbek

1

Вы действительно должны добавить еще один столбец в таблицу своего клиента, давайте просто назовите его Region.

ALTER TABLE CLIENT 
ADD REGION INTEGER 

Это добавит столбец в таблицу, а затем просто сделать UPDATE на этот столбец, как:

UPDATE C 
SET Region = R.RegionID 
FROM Region R 
INNER JOIN CLIENT C ON C.LATT = R.LATT AND C.LONG = R.LONG 

Вам не нужны условия в пункте WHERE больше, потому что они являются неявными в JOIN, поскольку они являются теми же условиями.

+0

Большое вам спасибо. – Ulugbek

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