Member 13559666 Ответов: 0

Как я могу использовать 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

Спасибо , я ценю вашу помощь

0 Ответов