Задавайте вопросы, мы ответим
Вы не зашли.
И так, есть база данных с двумя таблицами hubs (список хабов) и hub_users (юзеры на хабах). Таблицы имеют следующую структуру.
hubs
id, address, description
hub_users
id, hub_id, nick, ip_address
Есть пару задач:
1) В таблице hubs могут быть несколько адресов хаба записанных по разному (пример: dc.blablabla.ru; dc.blablabla.ru:411, 87.250.111.222), на деле это один хаб. Соответственно в таблице hub_users будут одни и те же записи или чуть различающаяся по одному хабу только с разными hub_id. Нужно записям в таблице hub_users с hub_id равному адресу хаба dc.blablabla.ru:411 и 87.250.111.222 изменить hub_id на id хаба с адресом dc.blablabla.ru, но сделать это так, чтобы дубликаты удалились, а уникальные добавились.
2) Удалить все записи в таблице hub_users с hub_id которого не существует в таблице hubs.
Помогите пожалуйста, заранее благодарю!
Неактивен
1. Нужно договориться писать имя хаба единообразно и всегда следовать этому соглашению;
2. Нужно вручную найти (ну или как-то автоматизировать поиск) «единообразных» строк;
Результатом работы этого пункта является пара id_from, id_to — id строк в hubs, в которых
мы хотим избавиться от строк id_from в пользу id_to;
3. Обновить пользователей: UPDATE hub_users SET hub_id = [id_to] WHERE hub_id = [id_from];
4. Удалить пустой хаб: DELETE FROM hubs WHERE id = [id_from];
5. Повторить начиная с пункта 2, пока не закончатся дубликаты.
--
DELETE u FROM hub_users u LEFT JOIN hubs h ON h.id = u.hub_id WHERE h.id IS NULL;
Неактивен