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 :: Конкатенация в запросе mysql

 PHP.SU

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


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

> Без описания
myocean
Отправлено: 26 Ноября, 2014 - 09:16:11
Post Id


Гость


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


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




Здравствуйте, подскажите как правильно написать запрос

CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE tab1 SET pic = '/files/images/'  + SELECT  pic FROM tab2 WHERE pid = tab1.id

суть в том чтоб переменной pic конкатенировать кусок пути?
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Ноября, 2014 - 09:35:13
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE tab1 SET pic = CONCAT('/files/images/', SELECT pic FROM tab2 WHERE pid = tab1.id)

Никогда такого не было нужно, не уверен что запрос отработает, возможно придется кастануть выборку к строке.
 
 Top
myocean
Отправлено: 26 Ноября, 2014 - 09:37:30
Post Id


Гость


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


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




DeepVarvar пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE tab1 SET pic = CONCAT('/files/images/', SELECT pic FROM tab2 WHERE pid = tab1.id)

Никогда такого не было нужно, не уверен что запрос отработает, возможно придется кастануть выборку к строке.


Спасибо за ответ, но к сожалению не работает... пишет #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT...
 
 Top
Viper
Отправлено: 26 Ноября, 2014 - 09:55:48
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




myocean вы не сможете сделать выборку в UPDATE т.к. вы пытаетесь сделать выборку по строке которую хотите обновить. mySQL атата вам сделал.

Сначала выбираете, потом обновляете.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
myocean
Отправлено: 26 Ноября, 2014 - 09:58:03
Post Id


Гость


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


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




Проблему решил с помощью скрипта php, в котором сначала выбираю id всех элементов таблицы tab1, далее через foreach перебираю, одновременно делая запрос в таблицу tab2, далее конкатенация со строковой переменной и последующим апдейтом tab1 по индексу


тем не менее вопрос интересен, можно ли вообще выполнить конкатенацию с подзапросом средствами SQL или нет?[/quote]

viper можете подсказать структуру запроса, а то много всего получаеться и select и update + подзапрос

(Отредактировано автором: 26 Ноября, 2014 - 10:00:29)

 
 Top
Panoptik
Отправлено: 26 Ноября, 2014 - 10:28:24
Post Id



Постоянный участник


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


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




CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE tab1
  2. LEFT JOIN tab2 ON tab1.pid = tab2.id
  3. SET pic = CONCAT('/files/images/', tab2.pic)


на просторах интернета найден такой полезный снипет

CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE
  2. Table_A AS A JOIN Table_B AS B ON A.FIELD = B.FIELD
  3. SET A.fieldname = ‘value’
  4. WHERE b.FIELD = xxx

(Отредактировано автором: 26 Ноября, 2014 - 10:31:04)



-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB