Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление id города
 
 автор: liberty   (07.03.2013 в 08:11)   письмо автору
 
 

Добрый день!
У меня есть база городов.
И надо поменять id_town.
Что я умею сейчас
UPDATE `school` SET `id_town`=49 WHERE `id_town`=94 

но это ведь каждое id_town перебирать надо. А строк не мало?
Что можно еще придумать?

  Ответить  
 
 автор: Sfinks   (07.03.2013 в 09:08)   письмо автору
 
   для: liberty   (07.03.2013 в 08:11)
 

А нужно поменять местами цифры во всех ID или в каких-то конкретных? И если во всех, то что как переставлять в 3-х, 4-х, 5-ти значных?

  Ответить  
 
 автор: liberty   (08.03.2013 в 01:27)   письмо автору
 
   для: Sfinks   (07.03.2013 в 09:08)
 

менять надо id_town во всей таблице. а там сотни строк.
в ручную?
ну же php знаем... вернее некоторые )) знают.
вообще, кто как решал эту задачу? или как видится решение?

  Ответить  
 
 автор: Valick   (08.03.2013 в 07:29)   письмо автору
 
   для: liberty   (08.03.2013 в 01:27)
 

никто таких задач не решал, и решать не будет
id - это такая штука которая не меняется, в этом смысл первичного ключа
а если каким-то чудом возникла такая ситуация, то значит ошибка допущена на более ранних этапах
___
поменять значения во всей базе можно одним запросом, если знать алгоритм или формулу замены одного значения на другое

  Ответить  
 
 автор: Sfinks   (10.03.2013 в 23:20)   письмо автору
 
   для: liberty   (08.03.2013 в 01:27)
 

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

  Ответить  
 
 автор: liberty   (11.03.2013 в 06:48)   письмо автору
 
   для: Sfinks   (10.03.2013 в 23:20)
 

И если во всех, то что как переставлять в 3-х, 4-х, 5-ти значных?[i][/i]
не понятен вопрос.
есть id к примеру 2345 - оно не верное, а нужно например присвоить ему другое значение 43435

  Ответить  
 
 автор: Sfinks   (11.03.2013 в 08:50)   письмо автору
 
   для: liberty   (11.03.2013 в 06:48)
 

И откуда это 43435 берется? Предлагаете угадать?

  Ответить  
 
 автор: liberty   (13.03.2013 в 02:45)   письмо автору
 
   для: Sfinks   (11.03.2013 в 08:50)
 

ну как откуда.
у меня есть новые данные.

  Ответить  
 
 автор: Lotanaen   (13.03.2013 в 09:59)   письмо автору
 
   для: liberty   (13.03.2013 в 02:45)
 

исчерпывающий ответ... при таком ответе остается посоветовать Вам вручную заменять каждый id :)
Откуда Вы берете новые данные? Как они взаимосвязаны со старыми или меж собой? Если есть какая-то закономерность, то можно упростить вашу задачу, а если все значения абсолютно случайны, то остается только каждое значение вручную изменять.

  Ответить  
 
 автор: Igorek   (13.03.2013 в 12:24)   письмо автору
 
   для: liberty   (13.03.2013 в 02:45)
 

Создайте список вида [old_id] => [new_id]. Пробегаемся по списку - генерируем SQL для обновления

  Ответить  
 
 автор: liberty   (15.03.2013 в 05:28)   письмо автору
 
   для: Igorek   (13.03.2013 в 12:24)
 

значения случайные.
придется в ручную.

  Ответить  
 
 автор: Igorek   (15.03.2013 в 07:24)   письмо автору
 
   для: liberty   (15.03.2013 в 05:28)
 

Эх...
ну как случайные то? по названию города можно же списки связать?
В каком формате список с новыми ID? Тоже таблица, csv, plain-text?
Приведите полный набор исходных данных (их формат)

  Ответить  
 
 автор: liberty   (15.03.2013 в 08:38)   письмо автору
 
   для: Igorek   (15.03.2013 в 07:24)
 

у меня на сайте есть каталог школ, вузов и ссузов.
ну по началу я создал на каждый каталог базу городов ))) на каждый каталог.
и вносил адреса вручную.
сейчас я скачал почтовую базу по индексам.
и если ранее я имел поле address - где я вносил полный адрес.
то сейчас доьавил поля для индекса, региона, района и города.
к примеру, вот так выглядит табл. town
INSERT INTO `town` (`id_town`, `id_area`, `id_region`, `id_country`, `name`) VALUES

адресс компании у меня забит в поле adress имеет вид - к примеру.
429500, ЧУВАШСКАЯ РЕСПУБЛИКА, ЧЕБОКСАРСКИЙ РАЙОН, КУГЕСИ, ул. Первомайская, д. 20

а сейчас я буду выводить иначе
$myrow_region["id_region"], $myrow_region["name"], $myrow_town["id_town"], $myrow_town["name"]);

и вот как быть?
данные записаны в csv, я их перевел в sql

  Ответить  
 
 автор: Igorek   (15.03.2013 в 09:27)   письмо автору
 
   для: liberty   (15.03.2013 в 08:38)
 

>к примеру, вот так выглядит табл. town
>INSERT INTO `town` (`id_town`, `id_area`, `id_region`, `id_country`, `name`) VALUES
так выглядит кусок запроса на вставку данных в таблицу town. Чтобы показать структуру таблицы пользуйтесь командой SHOW CREATE TABLE `table_name`

>данные записаны в csv
Предлагаю сделать так:
1. Создаем новую таблицу городов, куда пишем все данные по городам из csv-базы.
Пишем несложный скрипт и его выполняем.
2. Обновляем каталоги.
Для каждой школы/вуза/ссуза обновляем id_town на основе старой и новой таблиц городов. Зная индекс (из поля address) можно получить новый id_town из новой таблицы.
3. Убиваем старую таблицу городов.
4. Переименовываем новую таблицу на старое название.

  Ответить  
 
 автор: Sfinks   (15.03.2013 в 11:29)   письмо автору
 
   для: Igorek   (15.03.2013 в 09:27)
 

=(((
Я практолог!
Как я могу сделать операцию на мозге?
Только не предлагайте читать книжки и учиться - череп уже вскрыл.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования