- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
не могу что-то сообразить, прошу помощи )
Есть таблица, с колонками
id - идентификатор
icode - альтернативный идентификатор
fcode - альтернативный идентификатор родителя
т.е. содержит иерархию, в моем случае рубрик.
Надо добавить поле id2, которое будет содержать идентификатор родителя.
Наверняка это можно сделать одним запросом легко. Но не могу сообразить как (
Насчет "легко" я б не горячился)
http://www.mysqltutorial.org/mysql-add-column/
Насчет "легко" я б не горячился)
http://www.mysqltutorial.org/mysql-add-column/
Ну как бы не смешно.
Вопрос не в том как добавить колонку, а как внести в нее данные одним запросом.
Вопрос не в том как добавить колонку, а как внести в нее данные одним запросом.
У Вас очень невнятный старт-пост. Правильно: есть таблицы..., есть поля... нужно то-то. Что за "идентификатор родителя"?
Lord Maverik,
Как-то примерно так
update table t2 set t2.id2=(select t1.id from table t1 where t2.fcode2=t1.fcode)
У Вас очень невнятный старт-пост. Правильно: есть таблицы..., есть поля... нужно то-то. Что за "идентификатор родителя"?
ну не знаю...
1.
есть колонка id - содержит уникальное число.
есть колонка icode содержит уникальную строку.
это характеристики одной строки.
======================
2.
есть колонка fcode - она содержит ссылку, запись, как угодно называйте, равную icode родительского элемента
3.
например
овощи - icode t56
-- морковь fcode- t56
-- перец focde - t56
фрукты - icode gf7
-- банан fcode - gf7
-- яблоко fccde - gf7
=====================
4.
есть поле id2 - пустое
5.
надо заполнить его значениями id , так, чтобы сохранилась иерархия аналогичная icode - fcode
Так понятно? Если нет, то на каком этапе?
---------- Добавлено 12.07.2018 в 17:36 ----------
update table t2 set t2.id2=(select t1.id from table t1 where t2.fcode2=t1.fcode)
Ошибка.
#1093 - You can't specify target table 't2' for update in FROM clause
Ошибка.
#1093 - You can't specify target table 't2' for update in FROM clause
А, ну да. В mysql нельзя апдейтить таблицу из которой выбираешь. Так что в один запрос не получится.
Делайте в два. Копирните таблицу, потом сделайте вот тот запрос указав вместо t1 эту копию.
И вот тут мы очепятались, не " t2.fcode2=t1.fcode", а скорее " t2.fcode=t1.icode"
Гораздо быстрее написать скрипт, который пройдет по всем записям и добавит родителя.
Но если есть желание извратится с базой, можно создать временную таблицу, туда записать данные с id2, потом очистить основную и уже тогда перенести данные со временной.
Тогда теоретически можно в 3 запроса уложиться. Но про бакап обязательно подумайте :)
И вот тут мы очепятались, не " t2.fcode2=t1.fcode", а скорее " t2.fcode=t1.icode"
это я сам поправил
сделал через временную таблицу, спасибо