UPDATE `user_db` SET `guid` = ((select distinct `id` from `userdb_backup` where ((select distinct `id` from `userdb_backup`) in (select `guid` from `registered_users`))));
проблема состоит в том, что один разработчик(мой бывший друг) решил мне насолить и удалил всех пользователей из базы, теперь я хочу восстановить пользователей, вот только с запросом проблемы, вот собственно сама ошибка
Ошибка SQL (1242): Subquery returns more than 1 row
прошу помочь, так как базу доверять никому пока не могу, а сам слабенько владею SQL
Добавил: Мне нужно в таблице `user_db` в колонку `guid` записать значения колонки `id` из таблицы `userdb_backup` с условием что `id` в `userdb_backup` будут = `guid` в таблице `registered_users`.
спасибо за ответ, но я это уже читал, я прежде чем написать сюда, просидел не мало часов в прочтении информации об этом и в попытках исправить, написал сюда в надежде что кто нибудь сможет помочь в решении этой проблемы, или может найдется умелец который построит запрос правильно.
imya
Отправлено: 20 Января, 2014 - 09:26:27
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012 Откуда: Запорожье, Украина
Помог: 19 раз(а)
Сделайте в цикле ваши запросы. Тогда поочерёдно запишутся все нужные вам значения.
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
eai
Отправлено: 20 Января, 2014 - 10:40:18
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
imya пишет:
eai пишет:
Как правило вложенные запросы являются ошибкой сами по себе.
Смотря где и как их применять.
Newuser007
Отправлено: 20 Января, 2014 - 11:49:55
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Янв. 2014
Помог: 0 раз(а)
eai пишет:
Какая структура у registered_users и userdb_backup
ТИП: Таблица, Тип таблицы: MyISAM, Row Формат: Dynamic
в таблицах есть колонки с ID юзеров, registered_users - здесь записаны снова же только ID зарегестрированных и не забаненых т.е. если кто либо был забанен то его при бане удаляло из этой таблицы. userdb_backup - бэкап всех юзеров, т.е. и забаненых и всех остальных, в таблице только ID.
eai пишет:
И почему просто не вставить записи из userdb_backup ?
потому что не хочу забаненых вводить снова в список, плюс они смогут снова зарегестрироватся и пользоватся сайтом, так сказать второй шанс.
eai
Отправлено: 20 Января, 2014 - 11:53:02
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
Newuser007 пишет:
потому что не хочу забаненых вводить снова в список, плюс они смогут снова зарегестрироватся и пользоватся сайтом, так сказать второй шанс.
Какие колонки есть ?
Например
userdb_backup
ID
NAME
EMAIL
registered_users
ID
NAME
EMAIL
REGISTERED_DATE
P.S.
У вас задатки системного программиста
Newuser007
Отправлено: 20 Января, 2014 - 11:53:49
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Янв. 2014
Помог: 0 раз(а)
imya пишет:
Смотря где и как их применять.
-----
PHP:
скопировать код в буфер обмена
простите, но я через веб не могу, потому что сервер я отключил и он у меня дома, до тех пор пока не исправим. Но всё равно спасибо.
У меня прямой доступ, но если через веб скажем путь будет легче это сделать, то я буду рад выслушать. (Добавление)
eai пишет:
Newuser007 пишет:
потому что не хочу забаненых вводить снова в список, плюс они смогут снова зарегестрироватся и пользоватся сайтом, так сказать второй шанс.
Какие колонки есть ?
Например
userdb_backup
ID
NAME
EMAIL
registered_users
ID
NAME
EMAIL
REGISTERED_DATE
P.S.
У вас задатки системного программиста
в любой из этих таблиц колонки одинаковы - колонки:
GUID - тот же ID только после обновлений так сказать для случаев с мошенничеством, делал проверку на сайте путем сравнения двух таблиц.
ID - те же что и выше только выданные при регистрации.
LOGIN - думаю и так ясно
MAIL - тут тоже
DATE - Дата регистрации
PREM - тип аккаунта
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
Newuser007 пишет:
в любой из этих таблиц колонки одинаковы - колонки:
GUID - тот же ID только после обнослений так сказать для случаев с мошенничеством, делал проверку на сайте путем сравнения двух таблиц.
ID - те же что и выше только выданные при регистрации.
LOGIN - думаю и так ясно
MAIL - тут тоже
DATE - Дата регистрации
PREM - тип аккаунта
Если я правильно понимаю то в registered_users лежат те которые не заблокированы
Если да то вам достаточно просто вставить все записи из registered_users в user_db
INSERT INTO user_db (GUID,ID,LOGIN,MAIL,DATE,PROM) SELECT GUID,ID,LOGIN,MAIL,DATE,PROM FROM registered_users
При этом учтите что одноразового запуска этой команды достаточно для полного восстановления
Дя восстановления вы правы, этого достаточно, для восстановления я так же мог просто создать копию таблицы registered_users назвав её user_db, но проблема в том что я не хочу перетаскивать ID на ID, мне нужно из колонки GUID перетащить записи в колонку ID.
INSERT INTO user_db (GUID,ID,LOGIN,MAIL,DATE,PROM) SELECT GUID,GUID,LOGIN,MAIL,DATE,PROM FROM registered_users ((выполнить если
колонка ID из registered_users = колонке GUID из userdb_backup))
не получается написать просто, как ни пробывал вылетает ошибка, может я где то допускаю ошибку при написании, если можете напишите код, буду благодарен. (Добавление)
я пробывал вот так
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.