Перейти к содержанию
sasha12345

Подскажите SQL запрос, скопировать столбец с базы 1 в базу 2

Рекомендуемые сообщения

Добрый день. Подскажите SQL запрос, с базы test1, с таблицы poduct_description, скопировать столбец mini_description с данными  в  базу test2 за тем же адресом что и test1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

del.

Изменено пользователем 100napb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19 hours ago, sasha12345 said:

Добрый день. Подскажите SQL запрос, с базы test1, с таблицы poduct_description, скопировать столбец mini_description с данными  в  базу test2 за тем же адресом что и test1

есть необязательное, но очень желательное условие: обе базы должны быть на одном сервере. Так же, в структуре таблицы poduct_description из базы test2 должен существовать столбец mini_description. Есть он у Вас там?

 

А так, все просто - используется синтаксис типа insert into db1.table1 (value1) select value1 from db2.table2

Так что итоговой запрос будет такой:

 

INSERT INTO test2.poduct_description (mini_description)
SELECT mini_description FROM test2.poduct_description

 

Но что-то мне подсказывает, что результат Вас не устроит )) Потому что условия задачи некорректные. Выполнение запроса выше по Вашим условиям, просто насоздает кучу новых строк в таблице с одним единственным заполненным полем mini_description. Можно не одно поле селектить\инсертить - хоть все поля таблицы. Получится дубль целой таблицы или их объединение ))

 

Cкорее всего, Вам нужно что бы существующие строки в базе test2 ДОПОЛНИЛИСЬ полем мини-дисткрипшн из соответствующих им строк в базе test1. Ага?

Если так, то нужно знать, по каким полям искать соответствие между таблицами в разных базах (id-шники товаров не совпадают поди в таблицах; может по столбцу name искать соответствие - оно одинаковое?)

Волшебно будет, если приложите образец данных с каждой таблицы. Хоть по паре строк, которые нужно объединить. Скришнот там или че... тогда получится предметно помочь, а не советы давать а-ля гадание на кофейной гуще.

Изменено пользователем 100napb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.08.2018 в 10:49, 100napb сказал:

есть необязательное, но очень желательное условие: обе базы должны быть на одном сервере. Так же, в структуре таблицы poduct_description из базы test2 должен существовать столбец mini_description. Есть он у Вас там?

 

А так, все просто - используется синтаксис типа insert into db1.table1 (value1) select value1 from db2.table2

Так что итоговой запрос будет такой:

 

INSERT INTO test2.poduct_description (mini_description)
SELECT mini_description FROM test2.poduct_description

 

Но что-то мне подсказывает, что результат Вас не устроит )) Потому что условия задачи некорректные. Выполнение запроса выше по Вашим условиям, просто насоздает кучу новых строк в таблице с одним единственным заполненным полем mini_description. Можно не одно поле селектить\инсертить - хоть все поля таблицы. Получится дубль целой таблицы или их объединение ))

 

Cкорее всего, Вам нужно что бы существующие строки в базе test2 ДОПОЛНИЛИСЬ полем мини-дисткрипшн из соответствующих им строк в базе test1. Ага?

Если так, то нужно знать, по каким полям искать соответствие между таблицами в разных базах (id-шники товаров не совпадают поди в таблицах; может по столбцу name искать соответствие - оно одинаковое?)

Волшебно будет, если приложите образец данных с каждой таблицы. Хоть по паре строк, которые нужно объединить. Скришнот там или че... тогда получится предметно помочь, а не советы давать а-ля гадание на кофейной гуще.

да есть столбец пустой.

Закинул запрос, выдает ошибку http://prntscr.com/kkgwm4

Изменено пользователем sasha12345

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.08.2018 в 10:49, 100napb сказал:

есть необязательное, но очень желательное условие: обе базы должны быть на одном сервере. Так же, в структуре таблицы poduct_description из базы test2 должен существовать столбец mini_description. Есть он у Вас там?

 

А так, все просто - используется синтаксис типа insert into db1.table1 (value1) select value1 from db2.table2

Так что итоговой запрос будет такой:

 

INSERT INTO test2.poduct_description (mini_description)
SELECT mini_description FROM test2.poduct_description

 

Но что-то мне подсказывает, что результат Вас не устроит )) Потому что условия задачи некорректные. Выполнение запроса выше по Вашим условиям, просто насоздает кучу новых строк в таблице с одним единственным заполненным полем mini_description. Можно не одно поле селектить\инсертить - хоть все поля таблицы. Получится дубль целой таблицы или их объединение ))

 

Cкорее всего, Вам нужно что бы существующие строки в базе test2 ДОПОЛНИЛИСЬ полем мини-дисткрипшн из соответствующих им строк в базе test1. Ага?

Если так, то нужно знать, по каким полям искать соответствие между таблицами в разных базах (id-шники товаров не совпадают поди в таблицах; может по столбцу name искать соответствие - оно одинаковое?)

Волшебно будет, если приложите образец данных с каждой таблицы. Хоть по паре строк, которые нужно объединить. Скришнот там или че... тогда получится предметно помочь, а не советы давать а-ля гадание на кофейной гуще.

Структура такая http://prntscr.com/kkh31f

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
29 minutes ago, sasha12345 said:

да есть столбец пустой.

Закинул запрос, выдает ошибку http://prntscr.com/kkgwm4

эм... я не вижу Ваших таблиц и данных - отталкиваюсь лишь от Вашей же информации. Сам по себе SQL-запрос верный. Возможные ошибки:

  • Вы скопировали\вставили запрос не полностью (на скрине он обрезанный, т.к. нет второй строки из моего примера выше "SELECT mini_description FROM test2.poduct_description" )
  • разве в названиях Ваших таблиц нет префикса типа ос_ ? :) то есть, таблица на самом деле называется poduct_description, а не oc_poduct_description ?

Хорошо, что столбец есть. А что касается второй части моего вопроса:

29 minutes ago, sasha12345 said:

Cкорее всего, Вам нужно что бы существующие строки в базе test2 ДОПОЛНИЛИСЬ полем мини-дисткрипшн из соответствующих им строк в базе test1. Ага?

Если так, то нужно знать, по каким полям искать соответствие между таблицами в разных базах (id-шники товаров не совпадают поди в таблицах; может по столбцу name искать соответствие - оно одинаковое?)

Это так? если да, то а) запрос будет другой б) не советую выполнять тот, что указан выше, т.к. создадите уйму ненужных новых строк

Изменено пользователем 100napb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, 100napb сказал:

эм... я не вижу Ваших таблиц и данных - отталкиваюсь лишь от Вашей же информации. Сам по себе SQL-запрос верный. Возможные ошибки:

  • Вы скопировали\вставили запрос не полностью (на скрине он обрезанный, т.к. нет второй строки из моего примера выше "SELECT mini_description FROM test2.poduct_description" )
  • разве в названиях Ваших таблиц нет префикса типа ос_ ? то есть, таблица на самом деле называется poduct_description, а не oc_poduct_description ?

Хорошо, что столбец есть. А что касается второй части моего вопроса:

Это так? если да, что запрос будет другой

Таблица называется poduct_description без oc_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, 100napb сказал:

эм... я не вижу Ваших таблиц и данных - отталкиваюсь лишь от Вашей же информации. Сам по себе SQL-запрос верный. Возможные ошибки:

  • Вы скопировали\вставили запрос не полностью (на скрине он обрезанный, т.к. нет второй строки из моего примера выше "SELECT mini_description FROM test2.poduct_description" )
  • разве в названиях Ваших таблиц нет префикса типа ос_ ? то есть, таблица на самом деле называется poduct_description, а не oc_poduct_description ?

Хорошо, что столбец есть. А что касается второй части моего вопроса:

Это так? если да, что запрос будет другой

http://prntscr.com/kkh8s1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С

12 минут назад, 100napb сказал:

эм... я не вижу Ваших таблиц и данных - отталкиваюсь лишь от Вашей же информации. Сам по себе SQL-запрос верный. Возможные ошибки:

  • Вы скопировали\вставили запрос не полностью (на скрине он обрезанный, т.к. нет второй строки из моего примера выше "SELECT mini_description FROM test2.poduct_description" )
  • разве в названиях Ваших таблиц нет префикса типа ос_ ? то есть, таблица на самом деле называется poduct_description, а не oc_poduct_description ?

Хорошо, что столбец есть. А что касается второй части моего вопроса:

Это так? если да, что запрос будет другой

Скопировать весь столбец mini_description чтобы id 43 совпадал как на скрине

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 minutes ago, sasha12345 said:

Так. Великолепно. Это скриншот из базы, где есть и заполнено мини-дискрипшн.

 

Если Вам нужно аккуратно ДОПОЛНИТЬ таблицу из другой базы, в которой все то же самое, но только поле мини-дискрипшн пустое, то покажите пожалуйста такой же скрин из другой базы, где было бы видно, товар "LED лампа Е27 А60 11W Евросвет". Так можно будет понять, по каким полям базы можно связать строки и дополнить данные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем ладно... надеюсь разберетесь :)

 

если между товарами из баз test1 и test2 связь по полю product_id

Spoiler

UPDATE test2.product_description pd2, test1.product_description pd1
SET pd2.mini_description = pd1.mini_description
WHERE pd2.product_id = pd1.product_id;

 

если между товарами из баз test1 и test2 связь по полю name

Spoiler

UPDATE test2.product_description pd2, test1.product_description pd1
SET pd2.mini_description = pd1.mini_description
WHERE pd2.name = pd1.name;

 

рекомендую предварительно проверить результат работы скрипта на одном товаре, ради спокойствия. Для этого в запросе четко укажите product_id товара

Spoiler

UPDATE test2.product_description pd2, test1.product_description pd1
SET pd2.mini_description = pd1.mini_description
WHERE pd2.product_id = pd1.product_id AND pd2.product_id = 42;

 

Изменено пользователем 100napb
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, 100napb сказал:

В общем ладно... надеюсь разберетесь

 

если между товарами из баз test1 и test2 связь по полю product_id

  Скрыть контент

UPDATE test2.product_description pd2, test1.product_description pd1
SET pd2.mini_description = pd1.mini_description
WHERE pd2.product_id = pd1.product_id;

 

если между товарами из баз test1 и test2 связь по полю name

  Скрыть контент

UPDATE test2.product_description pd2, test1.product_description pd1
SET pd2.mini_description = pd1.mini_description
WHERE pd2.name = pd1.name;

 

рекомендую предварительно проверить результат работы скрипта на одном товаре, ради спокойствия. Для этого в запросе четко укажите product_id товара

  Скрыть контент

UPDATE test2.product_description pd2, test1.product_description pd1
SET pd2.mini_description = pd1.mini_description
WHERE pd2.product_id = pd1.product_id AND pd2.product_id = 42;

 

БОльшое спасибо,  буду пробовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 hours ago, sasha12345 said:

БОльшое спасибо,  буду пробовать

для будущих поколений отпишитесь пожалуйста по результатам - удалось\нет решить задачу )) ну и мне интересно, чего уж лукавить.

Изменено пользователем 100napb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.