Автор Тема: Добавил в таблицу payment новый столбик lastname  (Прочитано 832 раз)

12 Март 2016, 14:34:00
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Добавил в таблицу БД payment новый столбик lastname
как в него перенести уже существующие имена из таблицы address
Записи в новый столбик переносятся не полностью.

Как это сделать?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
12 Март 2016, 15:23:47
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
UPDATE payment
SET lastname ='...',
WHERE `id_customer`='ид клиента из табл. address'
12 Март 2016, 15:56:58
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
И что с этим делать, как SQL-запрос не проходит выдает ошибку.

Там около 500 имен как их все враз перенести?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
13 Март 2016, 12:17:43
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Почему у вас ошибка не знаю, это можно увидить в описание, которое показывает при запросе.
Если нужно обновить множество записей, испольуйте цикл в MySQL
UPDATE `payment` SET `lastname`=CONCAT('Имя ', @i := @i+1) WHERE `id_customer` = 'ид клиента' ORDER BY `id`;
13 Март 2016, 12:40:23
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
По мне так проще через php сделать.
<?php
include(dirname(__FILE__).'/../config/config.inc.php');
$customers Db::getInstance()->ExecuteS('SELECT id_customer, lastname FROM '._DB_PREFIX_.'address');
foreach (
$customers AS $customer
{
    
Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'payment` SET `lastname`="'.$customer['lastname'].'" WHERE `id_customer`="'.$customer['id_customer'].'"');
}
14 Март 2016, 01:11:25
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Почему у вас ошибка не знаю, это можно увидить в описание, которое показывает при запросе.
Если нужно обновить множество записей, испольуйте цикл в MySQL
UPDATE `payment` SET `lastname`=CONCAT('Имя ', @i := @i+1) WHERE `id_customer` = 'ид клиента' ORDER BY `id`;

По циклу, это значит надо создать столько таких строк сколь надо перенести имен?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
14 Март 2016, 01:38:41
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
По мне так проще через php сделать.
<?php
include(dirname(__FILE__).'/../config/config.inc.php');
$customers Db::getInstance()->ExecuteS('SELECT id_customer, lastname FROM '._DB_PREFIX_.'address');
foreach (
$customers AS $customer
{
    
Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'payment` SET `lastname`="'.$customer['lastname'].'" WHERE `id_customer`="'.$customer['id_customer'].'"');
}

Вполне вероятно, что таким образом заполнить столбец  в DB проще чем SQL запросом, только куда этот PHP код вставить.
Попробовал в корне создать такой php файл запустил его, вроде отработал, но ни каких ошибок не возникло и переноса данных не произошло.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
14 Март 2016, 11:31:04
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Я проверял, в корне сохраняю такой файл и меняю разные данные.
Prestashop 1.6.1, Версия PHP 5.3.29, Версия MySQL 5.5.44.
15 Март 2016, 14:30:57
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Этот скрипт переносит некоторые записи в столбце lastname из одной таблицы
в столбец lastname в другую таблицу в соответствии с id_customer?
Но в таблице payment нет столбца id_customer на который надо
ориентироваться при переносе  столбца lastname там есть столбец
id_seller который = id_customer

Может быть я что то не правильно объясняю, в таблице  payment
должны быть только некоторые имена  lastname клиентов из
таблицы address  которые совершили покупку на сайте
(не все зарегистрировавшиеся клиенты совершают покупки).
Не боги горшки обжигают, не зачем им такой хренью заниматься.
15 Март 2016, 15:18:15
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
id_sellerТакого поля нет в бд prestashop.
У вас похоже измененная бд.
16 Март 2016, 01:26:32
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Изначально нет, но оно появилось в таблице  payment
после установки стороннего модуля и выборочно соответствует id_customer
по этому надо сравнить наличие записей id_customer в таблице  address
с наличием таких  же id_seller и вставить  lastname соответствующих сравнению.

Короче, мне нужно выделить из зарегистрировавшихся - совершивших покупки.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
16 Март 2016, 11:41:41
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
и выборочно соответствует id_customer
В таком случае сразу для всех заменить имя нельзя.
Нет общих критериев для обработки. Делайте запрос для каждого ид клиента из табл. address
16 Март 2016, 14:25:18
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Ну да такие условия как выборочно соответствует, выборочно не соотвествует, только оператор может обработать.
16 Март 2016, 14:27:28
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Этот скрипт переносит некоторые записи в столбце lastname из одной таблицы
в столбец lastname в другую таблицу в соответствии с id_customer?
Но в таблице payment нет столбца id_customer на который надо
ориентироваться при переносе  столбца lastname там есть столбец
id_seller который = id_customer
Откуда я знаю какие у вас поля в таблице?
Мой скрипт работает и переносит данные в моей базе.
Если у вас id_seller который = id_customer, измените название, это не трудно, главное, что скрипт рабочий.
23 Апрель 2016, 15:03:36
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
В продолжение темы.

Какая команда заносит новые данные в поля lastname и firstname добавленные в другую
таблицу БД причем в других таблицах эти же поля заполняются автоматически.
Не боги горшки обжигают, не зачем им такой хренью заниматься.