Как я могу использовать UNION в mysql
Привет,
пожалуйста, у меня есть проблема, когда я пытаюсь добавить UNION в свой запрос в Mysql:
ошибка : MySQL сказал: #1064 - у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать near 'union (select StrYearr,StrDATE,0,3)
Что я уже пробовал:
code (Procedure): <pre lang="SQL"> begin DECLARE Mont INT default 1; DECLARE StrDATE varchar(7) ; DECLARE StrYearr varchar(7) ; set StrYearr = StrYear ; set StrDATE = CONCAT(Mont,'-',StrYearr); drop temporary table if exists TableHelp; create temporary table TableHelp ( PeriodY year, PeriodM varchar(10), MtnSTaxes float, TypeEntr int ); while (Mont <=12) do insert into TableHelp(PeriodY,PeriodM,MtnSTaxes,TypeEntr) ( select (SecTabDatePaieY,SecTabDatePaieM,sum(SecTable.SumV_Prix),3) from (select Date_Format(p.DatePaie,"%Y")as SecTabDatePaieY,Date_Format(p.DatePaie,"%m-%Y")as SecTabDatePaieM,(select sum(V_Prix) from lsthelpget_montsansfrais where V_configYesNon=1 and V_IdPaie= p.IdPaie and V_IdFAct=p.IdFact) as SumV_Prix from paiement p where PayePaie=1) as SecTable where SecTable.SecTabDatePaieM=Date_Format(StrDATE,"%m-%Y") group by SecTable.SecTabDatePaieM asc UNION (select StrYearr,StrDATE,0,3) ); set Mont= Mont+1 ; END WHILE; SELECT PeriodM,MtnSTaxes,TypeEntr from TableHelp; end
CHill60
Вы пробовали дать этому подзапросу псевдоним?
Member 13559666
мне дали ему имя "как сектант", но ничего
Member 13559666
проблема только в UNION (select StrYearr,StrDATE,0,3)
CHill60
У тебя есть проблемы посерьезнее, чем просто профсоюз! Редко, если вообще когда-либо следует использовать цикл для операций набора (mySql основан на наборе), и у вас слишком много коррелированных подзапросов
Вас нужно окружить каждый ваших подзапросов с круглыми скобками и дать каждый один - псевдоним. Я бы попытался показать вам, но без образцов данных потребовалось бы слишком много времени, чтобы разгадать, что у вас там есть.Для начала попробуйте использовать
UNION (select StrYearr,StrDATE,0,3) AS T1
Member 13559666
Спасибо , я ценю вашу помощь