Sim, eu sabia :-) mas já tive situações onde um determinado sql não é suportado pelo mecanismo de conexão. Tive problemas com d7, dbexpress e SQL Server 2000, onde um parâmetro dentro do on do Inner Join dava erro por não conseguir resolver os Parametros.
Eu tenhp um SQL que reprodizia esta situação, mas to sem máquina em casa :( 2008/6/13 Rubem Nascimento da Rocha <[EMAIL PROTECTED]>: > > Duas coisas: > > 1) Daniel A. Bastos, quem tem que aceitar UNIONS não é o Delphi, e sim o > mecanismo SQL do SGBD que vc está utilizando! > > 2) UNION só funcionará se, e somente se, vc definir os SELECTs envolvidos no > UNION com o mesmo número de campos em cada SELECT, e os tipos de dados de > todas as colunas serem idênticos! Essa é a regra pra usar UNION! > > Sds. > > ________________________________ > > To: delphi-br@yahoogrupos.com.br > From: [EMAIL PROTECTED] > Date: Fri, 13 Jun 2008 10:59:47 -0300 > Subject: Re: [delphi-br] delphiXunion > > Eu tenho vários usando dbx e sql server em d2007 e d7, com ibx em d6 e > interbase/firebird 1(estes bem antigos, heh) e zeos e postgres com > d2007. > > Este SQL é executado corretamente no seu SGDB? > > 2008/6/13 Luciano Calenzani Simões <[EMAIL PROTECTED]>: >> Estranho, eu tenho vários selects que tem mais de 2 unions. >> Lembrando que as colunas de TODOS os selects devem ter o mesmo nome. Me >> parece que o seu select há difença já do primeiro para o segundo. Quando >> você usar uma função, exemplo left(), lembre-se de renomear a columa para >> um >> nome igual ao do primeiro select, neste caso "Conta". >> >> Luciano Calenzani Simões >> >> ----- Mensagem original ---- >> De: Ioney Hotmail <[EMAIL PROTECTED]> >> Para: delphi-br@yahoogrupos.com.br >> Enviadas: Sexta-feira, 13 de Junho de 2008 10:32:31 >> Assunto: [delphi-br] delphiXunion >> >> existe alguma outra maneira de unir 2 dois selects sem usar o UNION, pois >> o >> delphi nao aceita a uniao com mais de 2 dois selects >> ex: >> >> select conta, DESCRICAO , >> sum(case when valor> 0 and cd = 'D' then 0 else 0 end) valoranterior, >> sum(case when valor> 0 and cd = 'D' then 0 else valor end) valordeb, >> sum(case when valor> 0 and cd = 'C' then 0 else valor end) valorCred, >> sum((case when valor> 0 and cd = 'D' then 0 else valor end) - (case when >> valor> 0 and cd = 'C' then 0 else valor end)) valoratual >> from lancamentos l, planocontas p >> where l.codred = p.codred >> and cliente = '2' >> group by CONTA, DESCRICAO, GR >> union >> select left(conta,8) , null, '4', >> sum(case when valor> 0 and cd = 'D' then 0 else 0 end) valoranterior, >> sum(case when valor> 0 and cd = 'D' then 0 else valor end) valordeb, >> sum(case when valor> 0 and cd = 'C' then 0 else valor end) valorCred, >> sum((case when valor> 0 and cd = 'D' then 0 else valor end) - (case when >> valor> 0 and cd = 'C' then 0 else valor end)) valoratual >> from lancamentos l, planocontas p >> where l.codred = p.codred >> and cliente = '2' >> group by left(conta,8) , null, '4' >> union >> select left(conta,5) , null, '3', >> sum(case when valor> 0 and cd = 'D' then 0 else 0 end) valoranterior, >> sum(case when valor> 0 and cd = 'D' then 0 else valor end) valordeb, >> sum(case when valor> 0 and cd = 'C' then 0 else valor end) valorCred, >> sum((case when valor> 0 and cd = 'D' then 0 else valor end) - (case when >> valor> 0 and cd = 'C' then 0 else valor end)) valoratual >> from lancamentos l, planocontas p >> where l.codred = p.codred >> and cliente = '2' >> group by left(conta,5) , null, '3' >> union >> select left(conta,2) , null, '2', >> sum(case when valor> 0 and cd = 'D' then 0 else 0 end) valoranterior, >> sum(case when valor> 0 and cd = 'D' then 0 else valor end) valordeb, >> sum(case when valor> 0 and cd = 'C' then 0 else valor end) valorCred, >> sum((case when valor> 0 and cd = 'D' then 0 else valor end) - (case when >> valor> 0 and cd = 'C' then 0 else valor end)) valoratual >> from lancamentos l, planocontas p >> where l.codred = p.codred >> and cliente = '2' >> group by left(conta,2) , null, '2' >> union >> select left(conta,1) , null, '1', >> sum(case when valor> 0 and cd = 'D' then 0 else 0 end) valoranterior, >> sum(case when valor> 0 and cd = 'D' then 0 else valor end) valordeb, >> sum(case when valor> 0 and cd = 'C' then 0 else valor end) valorCred, >> sum((case when valor> 0 and cd = 'D' then 0 else valor end) - (case when >> valor> 0 and cd = 'C' then 0 else valor end)) valoratual >> from lancamentos l, planocontas p >> where l.codred = p.codred >> and cliente = '2' >> group by left(conta,1) , null, '1' >> >> O DELPHI NAO ACEITA A UNIAO COM MAIS DE 2 DOIS SELECTS.... >> >> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para >> armazenamento! >> http://br.mail.yahoo.com/ >> >> >> > > -- > Abs > Daniel A. Bastos > > __________________________________________________________ > Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de > relacionamentos com até 6,000 fotos! > http://www.amigosdomessenger.com.br > -- Abs Daniel A. Bastos