Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2016, 02:04   #1
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию Insert + Select = You can't specify target table

Всем привет.

Кто может подсказать, как привести запрос в рабочее состояние ? ))

При запросе получаю ошибку

Цитата:
You can't specify target table 'test_table' for update in FROM clause
Код:
INSERT into `pm` (`subject`, `subject_id`, `message`, `author`, `status_a`, `target`, `status_t`, `path`, `date`) VALUES ((Select subject from pm where subject_id=:subject_id), :subject_id, :message, :author, 0, :target, 0, :path, now())

Как я понимаю, проблема в том, что выборку ( Select ) я пытаюсь сделать в той же таблице, что и добавление новой строки ... Но как это подправить ?
-Jack- вне форума Ответить с цитированием
Старый 01.11.2016, 07:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Что за синтаксис такой?

http://dev.mysql.com/doc/refman/5.7/...rt-select.html
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.11.2016, 22:48   #3
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

В смысле ? Обычный синтаксис ... А что смущает ?
-Jack- вне форума Ответить с цитированием
Старый 01.11.2016, 23:21   #4
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Попробовал чуть подправить, но результат всё равно печальный ...

Код:
INSERT into `pm` (`subject`, `subject_id`, `message`, `author`, `status_a`, `target`, `status_t`, `path`, `date`) VALUES (Select pm.subject, :subject_id, :message, :author, 0, :target, 0, :path, now() from pm where subject_id=:subject_id)
)
-Jack- вне форума Ответить с цитированием
Старый 01.11.2016, 23:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Где в той ссылке в VALUES вложенный запрос увидел? Там ему вообще не место, это отсебятина, нет такого синтаксиса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2016, 00:12   #6
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Точняк, а я этот момент и просмотрел. Спасибо большое, сейчас правда на index ругается (Field 'id' doesn't have a default value) - но это поправимо.
Аватар, спасибо большое за помощь !!! ))
-Jack- вне форума Ответить с цитированием
Старый 02.11.2016, 02:36   #7
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

а что не так с вложенным запросом (в топике)? должен нормально проходить, по крайней мере в том же sql server такое работает и не кашляет
может в этом мускуле не может, ну так что с него взять, это же мускул

Последний раз редактировалось come-on; 02.11.2016 в 02:38.
come-on вне форума Ответить с цитированием
Старый 02.11.2016, 10:17   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

У ТС
Код:
INSERT INTO tabl (a1,a2) VALUES((select field1,fild2 from ...))
Так не пойдет. А такие вложенные с одним полем и не множественные да
Код:
INSERT INTO tabl (a1,a2) VALUES((select field from ...),(select field from ...))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2016, 12:34   #9
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
VALUES ((Select subject from pm where subject_id=:subject_id),
у тс я вижу 1 поле, где вы несколько видите?
come-on вне форума Ответить с цитированием
Старый 02.11.2016, 12:50   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
VALUES (Select pm.subject, :subject_id, :message, :author
То ж по поводу этого. А в #1 выпендреж мускула
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ASP.net Tabled->Insert Table Vitalik85 Visual C++ 1 03.08.2013 08:26
INSERT Value( select) Marina8 Помощь студентам 5 24.04.2012 13:03
VBA Table Select DJTreeno Microsoft Office Word 1 23.06.2011 19:56
insert через table->grid: ошибка Geddar БД в Delphi 2 06.06.2008 13:43