Задавайте вопросы, мы ответим
Вы не зашли.
надо сравнить колонки "code" между исходной таблицей tXXXXXX и конечной таблицей eXXXXXX.
в таблице еХХХХХ есть колнонки
id code ref_id
в таблице tХХХХХ есть колнонки
id code done
если найден одинаковый code в обеих таблицах, то в таблице tХХХХХ для done надо установить значение "1", если не найдено, то значение "0".
При этом по id сравнивать нельзя!
Спасибо.
PS: Хотелось бы знать, как выглядит MySQL-запрос, чтобы это реализовать.
Отредактированно user0001 (02.11.2012 12:24:51)
Неактивен
а поле tХХХХХ.done какого типа? Если числового, то поставьте ему значение по умолчанию 0 - половины проблема не станет.
осталось найти совпадения:
Неактивен
Shopen написал:
а поле tХХХХХ.done какого типа? Если числового, то поставьте ему значение по умолчанию 0 - половины проблема не станет.
тип enum
Неактивен
Shopen написал:
осталось найти совпадения:
UPDATE еХХХХХ, tХХХХХ
SET tХХХХХ.done = 1
WHERE еХХХХХ.code = tХХХХХ.code
Мускл ответил:
#1054 - Unknown column 'е1010762.code' in 'where clause'
но такая колонка в таблице есть. Проблема с кавычками?
Неактивен
user0001 написал:
Мускл ответил:
#1054 - Unknown column 'е1010762.code' in 'where clause'
но такая колонка в таблице есть. Проблема с кавычками?
Врядли. Приведите структуру таблицы (SHOW CREATE TABLE е1010762) и сам запрос, "как есть"
Отредактированно Shopen (02.11.2012 13:05:53)
Неактивен
CREATE TABLE IF NOT EXISTS `e1010762` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` char(20) NOT NULL,
`ref_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `t1010762` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` char(20) NOT NULL,
`done` enum('0','1') NOT NULL,
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Запрос:
UPDATE e1010762, t1010762
SET t1010762.done = "1"
WHERE e1010762.code = t1010762.code
Отредактированно user0001 (02.11.2012 13:25:18)
Неактивен
Ваш код, выполненный буквально - работает:
Неактивен
я виноват, забыл очень важную вещь:
в таблице eXXXXX примерно 450 000 записей
в таблице tXXXXX примерно 570 000 записей
при этом таблица eXXXXX содержит много повторяющихся кодов (колонка "code") из таблицы tXXXXX (несмотря на то что в ней меньше записей).
Неактивен
1054 - синтаксическая ошибка, поэтому она не может зависеть от того сколько записей в таблице. Наполнение таблицы важно для запроса, но не может повлиять на появление той ошибки, которую вы привели
Неактивен
user0001 написал:
я виноват, забыл очень важную вещь:
это не к синтаксической ошибке, - это я просто забыл дописать.
Неактивен