Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 01.11.2016, 03:04   #1
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 361
Репутация: 47
По умолчанию 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, 08:41   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,247
Репутация: 5820
По умолчанию

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

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

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

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

Код:

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- вне форума   Ответить с цитированием
Старый 02.11.2016, 00:27   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,247
Репутация: 5820
По умолчанию

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

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

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

Последний раз редактировалось come-on; 02.11.2016 в 03:38.
come-on вне форума   Ответить с цитированием
Старый 02.11.2016, 11:17   #8
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,247
Репутация: 5820
По умолчанию

У ТС
Код:

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, 13:34   #9
come-on
Профессионал
 
Регистрация: 21.10.2015
Сообщений: 1,444
Репутация: 414
По умолчанию

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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




16:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru