parser


 

 
   команды управления поиском

update одной таблици, данными из другой через сранивание.

nreg 20.04.2009 19:19 / 20.04.2009 19:22

задача, есть две таблицы
---------
| users |
---------
|Id|name|
---------
|01|иван|
---------
|02|Оля |
---------
|03|Коля|
---------
|04|Миша|
---------
|05|Саша|
---------
|06|Дима|
---------
|07|Вова|
---------
|08|Таня|
---------
 ......
---------
|99|Алла|
---------
##и вторая таблица
--------------------
|   user_or_disk   |
--------------------
|Id|name_id|disk_id|
--------------------
|01| Иван  |  5234 |
--------------------
|02| Иван  |  2342 |
--------------------
|03| Саша  |  2342 |
--------------------
|04| Таня  |  9411 |
--------------------
|05| Дима  |  2342 |
--------------------
|07| Дима  |  5323 |
--------------------
|08| Дима  |  6542 |
--------------------
 .................
--------------------
|99| Миша  |  5536 |
--------------------
как видите таблица имен без повторений там не может быть два имени.
а вторая таблица, там могут быть совпадения
например у ивана и Саши могут быть одинаковые disk_id номера и наоборот, у одного номера disk_id одинаковые владельцы.

как заменить имена name_id таблицы user_or_disk на Id из тыблицы users списка людей ?
что бы было так:
##вторая таблица
--------------------
|   user_or_disk   |
--------------------
|Id|name_id|disk_id|
--------------------
|01|   01  |  5234 |
--------------------
|02|   01  |  2342 |
--------------------
|03|   05  |  2342 |
--------------------
|04|   08  |  9411 |
--------------------
|05|   06  |  2342 |
--------------------
|07|   06  |  5323 |
--------------------
|08|   06  |  6542 |
--------------------
 .................
--------------------
|99|   04  |  5536 |
--------------------
попробвал сделать средствами SQL
через запрос на обновление данных..
update user_or_disk set name_id = (select Id from users where name=name_id)
данный способ работает, но обновляет не все данные... часть затирает в null почему не могу понять., есть другие способы как это исправить ?