2014-02-20 2 views
0

У меня есть таблица КЛИЕНТАКак я могу скопировать столбец таблицы в другую таблицу

CLIENT_ID NAME  CP  VILLE 
1   razer  49004 St hallo 
2   mayui  49005 Kubol 

и другой таблицы AGENCE

CLIENT_ID AGENCE_ID ADDR CP  VILLE  
1   1   qsdf null null 
2   2   qsdf null null 
1   9   dqsf 5454 5254 
1   5   fff 4587 6568 

Как я могу заполнить CP и Вилле поваренной AGENCE?

Конечно, я могу удалить/усекать AGENCE и использовать SELECT INSERT. Но я не могу этого сделать.

+0

Какие СУБД вы используете? Postgres? Oracle? но почему вы вообще храните информацию о дублирующей (дублированной) информации? Вы можете всегда присоединяться к двум таблицам, если вам нужно значение 'cp' и' ville' при доступе к таблице 'agence'. –

+2

Можете ли вы просто использовать простой запрос 'UPDATE', связывающий таблицу' AGENCE' с таблицей 'CLIENT' на' CLIENT_ID'? –

+0

Даже лучше, не можете ли вы просто использовать простой запрос 'JOIN', связывающий таблицы в точке, где вам нужна информация? Что, если вы скопируете данные и «майюи» переместитесь в другую деревню? – CompuChip

ответ

2

Так один из способов сделать то, что вы спросил будет следующее:

UPDATE A 
    SET A.CP = C.CP, A.VILLE = C.VILLE; 
    FROM AGENCE A 
    LEFT JOIN CLIENT C ON A.CLIENT_ID = C.CLIENT_ID 

Лучший способ сделать то, что вы действительно хотел , было бы сбросить столбцы из таблицы AGENCE и просто сделать соединение, когда вам это нужно

SELECT AGENCE.AGENCE_ID, AGENCE.CLIENT_ID, CLIENT.CP, CLIENT.VILLE 
    FROM AGENCE 
    LEFT JOIN CLIENT ON AGENCE.CLIENT_ID = CLIENT.CLIENT_ID; 

Убедитесь, что у вас есть правильная настройка внешнего ключа.

Почему AGENCE_ID не первый столбец в вашем примере, кстати? Он выглядит как первичный ключ.

+0

Зачем столбцу первичного ключа должны быть первые столбцы? –

+0

Это не так, но я никогда не видел его по-другому. – CompuChip

0

Для MSSQL это будет:

UPDATE a 
SET VILLE = c.VILLE, CP = c.CP 
FROM CLIENT c 
INNER JOIN AGENCE a ON c.CLIENT_ID=a.CLIENT_ID 
0

я просто обновить ответ @compuchip

UPDATE A 
    SET A.CP = C.CP, A.VILLE = C.VILLE; 
    FROM AGENCE A 
    LEFT JOIN CLIENT C ON 
A.CLIENT_ID = C.CLIENT_ID 
AND 
A.AGENCE_ID = C.CLIENT_ID 
+1

Err ... 'AGENCE_ID = CLIENT_ID'? Теперь ты действительно потерял меня. Надеюсь, у вас есть ключ к пониманию того, что вы делаете :) – CompuChip

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