Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вложить select в insert

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: mysql
Roni
Отправлено: 28 Февраля, 2013 - 17:59:46
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Нужно в новую строку поместить данные из родительского узла (другой строки этой же таблицы). Единственное про пришло это запросом отправить такую конструкция, чтобы не делать два запроса из php.
Какие есть пути для решения задачи?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT @b:=`url` FROM `table` WHERE `id`=1;
  2. INSERT `table`(`url`) VALUES(@b);
 
 Top
esterio
Отправлено: 28 Февраля, 2013 - 18:08:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO tablename(url) SELECT url FROM tablename2  WHERE id=1;
 
 Top
tuareg
Отправлено: 28 Февраля, 2013 - 18:09:20
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Если только одно значение, то можно и одним запросом типа:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. INSERT `table`(`url`) VALUES(SELECT `url` FROM `table` AS t WHERE t.`id`=1);
  3.  

Иначе процедура, или php
(Добавление)
esterio пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO tablename(url) SELECT url FROM tablename2  WHERE id=1;

Не прокатит, по примеру url берется из самой таблицу, в которую вставляется
 
 Top
esterio
Отправлено: 28 Февраля, 2013 - 18:13:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Тогда через создание temp таблицы. Погуглите. Я когда-то искал первая же ссилка
 
 Top
Roni
Отправлено: 28 Февраля, 2013 - 18:20:18
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




INSERT INTO tablename(url) SELECT ...
Это по сути копирование всей строки. А если нужно только одну ячейку скопировать, а остальные данные придут из php?

Что-по подобное ожидал, но не работает:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `table`(a,b,c, url) VALUES(?,?,?, (SELECT url FROM `table` WHERE id=?))

(Отредактировано автором: 28 Февраля, 2013 - 18:21:35)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Февраля, 2013 - 18:29:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




tuareg пишет:
Не прокатит, по примеру url берется из самой таблицу, в которую вставляется

Как раз прокатит. insert .. select может писать туда же, откуда читает.

Roni пишет:
А если нужно только одну ячейку скопировать, а остальные данные придут из php?

Ничто не мешает:
CODE (SQL):
скопировать код в буфер обмена
  1. INSERT `table`(`url`,`field1`,`field2`) SELECT `url`, $someValue1, $someValue2 FROM `table` AS t WHERE t.`id`=1);

Разумеется, с сохранением валидного синтаксиса SQL.


-----
PostgreSQL DBA
 
 Top
Roni
Отправлено: 28 Февраля, 2013 - 18:37:40
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Мелкий, отлично работает. Я о таком варианте и не подумал...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB