Копирование данных из одной таблицы MySQL в другую, когда данные пересекаются с использованием переполнения стека

Я новичок в программировании и буду очень признателен за вашу помощь. 🙂 Итак, у меня есть USER стол и SALES Таблица. На SALES Таблица У меня есть только имя и фамилия пользователей. На USER стол у меня есть name, last name, USER_ID, email и так далее…

Мне нужно скопировать USER_ID от USER стол к SALES стол, когда NAME а также LAST NAME являются совпадением.

Вот структура:

USER_TABLE_A
USER_ID_A
NAME_LASTNAME_A

SALES_TABLE_B
ROW_ID_B
NAME_B
LASTNAME_B
USER_ID_B (empty)

До сих пор я получил обе таблицы для отображения данных, когда они пересекаются, но понятия не имею, куда идти дальше. Может ли кто-нибудь помочь, пожалуйста?

    $sql1 = mysql_query("SELECT name_B, lastname_B, user_id_B, row_id_B FROM sales_table_B WHERE name_B IS NOT NULL AND lastname_B IS NOT NULL", $db);
$sql2 = mysql_query("SELECT name_lastname_A, user_id_A FROM user_table_A WHERE name_lastname_A IS NOT NULL", $db);
$a1 = array();
while ($row = mysql_fetch_array($sql1)) {
$id = $row['row_id_B'];
$name1.$id = $row['name_B']." ".$row['lastname_B'];
array_push($a1, $name1.$id);
}
$a2 = array();
while ($row2 = mysql_fetch_array($sql2)) {
$id2 = $row2['user_id_A'];
$name2.$id2 = $row2['name_lastname_A'];
array_push($a2, $name2.$id2);
}
$result = array_intersect($a1,$a2);
print_r($result);

Заранее спасибо!

1

Решение

При условии, что NAME_LASTNAME_A колонка в USER_TABLE_A это объединение NAME_B а также LASTNAME_B столбцы SALES_TABLE_Bпосле UPDATE запрос должен обновить идентификаторы:

update sales_table_b
set b.user_id_b = (
select user_id_a from user_table_a
where name_lastname_a = concat(b.name_b, ' ' , b.lastname_b)
limit 1
where exists(
select user_id_a from user_table_a
where name_lastname_a = concat(b.name_b, ' ' , b.lastname_b)
)
)

Обратите внимание, что в случае нескольких пользователей, имеющих одинаковые имя и фамилию, будет учитываться идентификатор первого соответствующего пользователя.

0

Другие решения

Большое спасибо, Даршан! Ваш ответ отсутствовал а) после лимита 1, но с корректировкой он работал прекрасно! Вот код, который работал:

UPDATE sales_table_b
SET user_id_b = (SELECT user_table_a.user_id_a
FROM user_table_a
WHERE user_table_a.name_lastname_a = CONCAT(sales_table_b.name_b, ' ' , sales_table_b.lastname_b) LIMIT 1)
WHERE EXISTS (SELECT *
FROM user_table_a
WHERE user_table_a.name_lastname_a = CONCAT(sales_table_b.name_b, ' ' , sales_table_b.lastname_b))
0

По вопросам рекламы [email protected]