Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть таблица customer, структура: 1 customer_id int(11) 2 store_id int(11) 3 firstname varchar(32) 4 lastname varchar(32) 5 avatar varchar(255) 6 email varchar(96) 7 telephone varchar(32) 8 fax varchar(32) 9 password varchar(40) 10 salt varchar(9) 11 cart text 12 wishlist text 13 newsletter tinyint(1) 14 address_id int(11) 15 customer_group_id int(11) 16 ip varchar(40) 17 status tinyint(1) 18 approved tinyint(1) 19 token varchar(255) 20 date_added datetime 21 utm text 22 lead_id int(11) 23 contact_id int(11) 24 affiliate_paid int(11) 25 affiliate_life_time date 26 affiliate_bonus_time_constant date 27 parent int(11) и affiliate, структура: 1 affiliate_id int(11) 2 firstname varchar(32) 3 lastname varchar(32) 4 email varchar(96) 5 telephone varchar(32) 6 fax varchar(32) 7 password varchar(40) 8 salt varchar(9) 9 company varchar(32) 10 website varchar(255) 11 address_1 varchar(128) 12 address_2 varchar(128) 13 city varchar(128) 14 postcode varchar(10) 15 country_id int(11) 16 zone_id int(11) 17 code varchar(64) 18 commission decimal(4,2) 19 tax varchar(64) 20 payment varchar(64) 21 cheque varchar(100) 22 paypal varchar(64) 23 bank_name varchar(64) 24 bank_branch_number varchar(64) 25 bank_swift_code varchar(64) 26 bank_account_name varchar(64) 27 bank_account_number varchar(64) 28 ip varchar(15) 29 status tinyint(1) 30 approved tinyint(1) 31 date_added datetime 32 qiwi varchar(100) 33 card varchar(100) 34 yandex varchar(100) 35 request_payment decimal(10,2) 36 coupon int(11) 37 webmoney_wmr varchar(100) 38 webmoney_wmz varchar(100) 39 webmoney_wmu varchar(100) 40 webmoney_wme varchar(100) 41 webmoney_wmy varchar(100) 42 webmoney_wmb varchar(100) 43 webmoney_wmg varchar(100) 44 alert_pay varchar(100) 45 moneybookers varchar(100) 46 liqpay varchar(100) 47 sage_pay varchar(100) 48 two_checkout varchar(100) 49 google_wallet varchar(100) 50 parent int(11) Мне нужно перенести данные каждого пользователя(customer) в таблицу партнёр(affiliate). Т.е. заполнить совпадающие поля, при этом если пользователь уже есть в партнёрах(абсолютно уникальное поле email), то ничего не делать. Помогите запрос составить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 18:38 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
Sigizmund2012если пользователь уже есть в партнёрах(абсолютно уникальное поле email)Уникальные индексы в таблице партнеров на этих уникальных полях имеюся? Дефолтовые значения на отсутствующих при вставке полях заданы? Если да и да, то скопировать (не переместить!) данные можно так примерно: INSERT IGNORE INTO `affiliate` (список полей таблицы `affiliate`, в которые вставлять данные) SELECT (соответствующий список полей таблицы `customer`с данными для вставки) FROM `customer`; Документация: https://dev.mysql.com/doc/refman/5.7/en/insert-select.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 22:41 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
vkleУникальные индексы в таблице партнеров на этих уникальных полях имеюся? Я имел ввиду, что e-mail уникальный у каждого пользователя, и 2-х пользователей с одинаковым email быть не может, как и партнёров, поэтому поле email уникальное. А вообще архитектурно в таблицах уникальное поле(key) это cusomer_id и affiliate_id соответственно. Дефолтовые значения на отсутствующих при вставке полях заданы? А как это проверить через phpMyAdmin? Некоторые поля в affiliate пустые(например fax, иногда adress). Нужно именно скопировать данные, не перенести, при этом, если в affiliate уже есть партнёр с email из customer, то такого пользователя не копировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 14:30 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
Sigizmund20122-х пользователей с одинаковым email быть не можетЭто понятно, это Вы бизнес-логику рассказываете. А чем она обеспечена? Можно уникальный ключ задать на поле "email", можно перед регистрацией пользователя или обновлением его данных где-нить в личном кабинете проверять наличие вводимого адреса электронной почты, а можно и самого добросовестного оператора бабу Маню с 40-летним стажем "набивки" документов перед вводом данных обязать проверять по списочку в тетрадке. В какой-то мере даже и третий вариант будет работоспособным, несмотря на его странность. Однако, на уровне СУБД уникальность можно гарантировать только средствами этой самой СУБД. На уровне приложения гипотетически сгодится и второй вариант. Sigizmund2012архитектурно в таблицах уникальное поле(key) это cusomer_id и affiliate_id соответственноЭто "для внутреннего пользования", скорее всего. К реальному пльзователю оно вряд ли имеет отношение за пределами таблицы или базы. Но вот нужно ли копировать ID из одной таблицы в другую - сие не ясно. Sigizmund2012А как это проверить через phpMyAdmin?Ткнуть во вкладку "Структура" таблицы и посмотреть. Не вариант? Тогда SHOW CREATE TABLE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 20:29 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
vkle, Это понятно, это Вы бизнес-логику рассказываете. А чем она обеспечена? Уникальность поля email проверяется php скриптом во время регистрации пользователя, не самой базой. Но вот нужно ли копировать ID из одной таблицы в другую - сие не ясно. Не нужно, они различаются у customer и affiliate, кроме того, стоит у обоих AUTO_INCREMENT, так, что это поле автоматически умножается на 1 при добавлении нового элемента в таблицу. Ткнуть во вкладку "Структура" таблицы и посмотреть. Не вариант? Тогда SHOW CREATE TABLE Почти у всех полей нет значения по умолчанию, кроме parent=0, comission=0.00, recuest_payment=0.00 и coupon=NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 11:57 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
Sigizmund2012Уникальность поля email проверяется php скриптом во время регистрации пользователя, не самой базой.Ну то есть не гарантируется. А напрасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 12:30 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
AkinaSigizmund2012Уникальность поля email проверяется php скриптом во время регистрации пользователя, не самой базой.Ну то есть не гарантируется. А напрасно. А почему не гарантируется? Я точно не знаю, но думаю, что работает он примерно так: загружает таблицу customer и пробегает циклом по полям email, сравнивая их с введённым пользователем, если есть совпадение выдаёт ошибку. Ну или выполняет что-то типа этого: Код: sql 1. разве это не гарантия уникальности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 12:57 |
|
||
|
Перенести совпадающие поля из одной таблицы в другую
|
|||
|---|---|---|---|
|
#18+
Sigizmund2012разве это не гарантия уникальности?НЕТ. Вполне достаточно параллельного исполнения двух копий кода, каждая из которых внесёт в таблицу одну и ту же запись. И это пройдёт, ибо между циклом проверки и запросом на запись есть "зазор". И никаких ошибок не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 13:26 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39543249&tid=1830317]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 355ms |

| 0 / 0 |
