У меня есть запрос со сложной конкатенацией в нем. Это что-то вроде объединения результатов нескольких вложенных выборок, если результаты не равны нулю. Он отлично работает (хотя меня это немного напрягает) на нашем сервере разработки, на котором работает MySQL 5.1, но на нашем рабочем сервере, который запускает отчеты 5.0
FUNCTION database.concat does not exist
Есть идеи, почему это может быть? Обновление, к сожалению, пока не подходит, поэтому, если у кого-то нет яркой идеи, я почти застряну в переписывании этого отчета.
Запрос выглядит следующим образом (Да, я понимаю, что ужасно злоупотребляю mysql. Давайте пока отложим это. Если кто-нибудь знает, каким образом можно ссылаться на подвыбор с помощью псевдонима, что было бы удобно, но я никогда в состоянии сделать это, следовательно, повторный подвыбор. Также concat возвращает NULL
, если какой-либо из аргументов NULL
, следовательно, операторы if.)
select (concat(if((select
concat(if(b.foo is not null, b.foo, ""),
" ",
if(f.bar is not null, f.bar, ""))
from `foo_table` as f
left join `bar_table` as b
on b.SOME_ID = f.SOME_ID
where f.STUDENT_ID = t.STUDENT_ID
and bar.NewID = t.OldID order by bar.id limit 1) is not null,
(select
concat(if(b.foo is not null, b.foo, ""),
" ",
if(f.bar is not null, f.bar, ""))
from `foo_table` as f
left join `bar_table` as b
on b.SOME_ID = f.SOME_ID
where f.STUDENT_ID = t.STUDENT_ID
and bar.NewID = t.OldID order by bar.id limit 1),
""),
" ",
t.reason) as Reason
from table as t