SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.03.2013 13:10:29

SamArt
Участник
Зарегистрирован: 05.03.2013
Сообщений: 6

Присваивание значения столбцу

Вообщем, проблема такова. Есть 2 таблицы: adress и adressmap
мы знаем  adress.id, по которому мы смотрим на предмет совпадения с adressmap.adresscode, если совпадает то adressmap.providerid присваивается 325.
Точнее есть список адресов по которому можно ручками узнать adress.id.
Хочется сделать сравнение списка и таблицы adress, откуда потом вычленяется adress.id и сравнивается с adressmap.adresscode и при совпадении providerid присвается энное значение. Не пойму как реализовать, а принцип действия понятен.

Неактивен

 

#2 05.03.2013 13:15:47

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Присваивание значения столбцу

Приведите конкретику пожалуйста. А именно - текущую структуру таблиц, тестовые данные, текущую выборку и ту выборку, который хотите в итоге получить.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 05.03.2013 13:43:04

SamArt
Участник
Зарегистрирован: 05.03.2013
Сообщений: 6

Re: Присваивание значения столбцу

deadka написал:

Приведите конкретику пожалуйста. А именно - текущую структуру таблиц, тестовые данные, текущую выборку и ту выборку, который хотите в итоге получить.

эмм, извините, я в первый раз на форуме. Может быть не совсем понял.Вроде же точно описал задание.

Неактивен

 

#4 05.03.2013 13:46:37

SamArt
Участник
Зарегистрирован: 05.03.2013
Сообщений: 6

Re: Присваивание значения столбцу

наброски запроса:
update adressmap
set providerid = "325"
where adress.id = adressmap.adresscode

не понимаю как связать таблицы, через IN не получается.

Неактивен

 

#5 05.03.2013 13:54:38

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Присваивание значения столбцу

Приведите запросы на создание таблиц как в http://sqlinfo.ru/forum/viewtopic.php?pid=36260#p36260
и набор тестовых данных в виде insert into.
Далее тот результат, который Вы хотите получить.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 05.03.2013 14:01:42

SamArt
Участник
Зарегистрирован: 05.03.2013
Сообщений: 6

Re: Присваивание значения столбцу

таблицы уже есть, нужно внести изменения касательно providerid. Или хотя бы можете предложить пример решения.
две разные таблицы, там есть данные которые совпадают, но под разными именами записаны.
и при совпадении данных, мы providerid присваиваем число

Неактивен

 

#7 05.03.2013 14:04:12

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Присваивание значения столбцу

Я понимаю, что таблицы уже есть - хочу увидеть их структуру, для этого и прошу привести сюда. И тестовые данные тоже. После этого возможно смогу предложить вариант решения.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 05.03.2013 14:12:43

SamArt
Участник
Зарегистрирован: 05.03.2013
Сообщений: 6

Re: Присваивание значения столбцу

tab adress
1     id     int(11)        
2     city     varchar(255)     utf8_unicode_ci        
3     districtcode     int(11)            
4     district     text     utf8_unicode_ci        
5     street     varchar(255)     utf8_unicode_ci        
6     housenumber     varchar(11)     utf8_unicode_ci        
7     buildingnumber     varchar(11)     utf8_unicode_ci        



tab.adress_map
1     addresscode     int(11)        
2     providerid     int(11)            
3     controlid     int(11)    

id и adresscode имеют одинаковое значение, нужно их сравнить, и в случае совпадения в столбец providerid прописать 325.

из phpadmin  структура

Неактивен

 

#9 05.03.2013 14:22:53

SamArt
Участник
Зарегистрирован: 05.03.2013
Сообщений: 6

Re: Присваивание значения столбцу

UPDATE adress_map
    SET providerid = '325'
    FROM adress pr LEFT JOIN
    adress_map ON adress.id=adress_map.adresscode
    WHERE providerid = '325' AND
    adress_map.adresscode IS NULL

вот, но не работает, а по другому не знаю как написать.

Неактивен

 

#10 05.03.2013 22:55:11

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Присваивание значения столбцу

Допустим, в таблице adress есть 5 строк, где id принимает значения
1
2
3
4
5

В таблице adress_map содержатся следующие строки
addresscode providerid controlid
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0

Вам нужен итоговый результат в таблице address_map в виде
addresscode providerid controlid
3 325 0
4 325 0
5 325 0
6 0 0
7 0 0
?

То есть исходим из того, что нужно прописать providerid=325 в тех строках, у которых такой id, который присутствует в таблице adress?
Если так, то можно

UPDATE `adress_map` m SET `providerid` = 325 WHERE EXISTS ( SELECT `id` FROM adress WHERE `id` = m.addresscode );

или
UPDATE `adress_map` m SET `providerid` = 325 WHERE ( SELECT count(*) FROM adress WHERE `id` = m.addresscode ) > 0;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson