por q dá este erro
Por que o firebird retorna o erro abaixo quando executo uma instrução com union all no IBOCONSOLE?
count of column list and variable list do not match
Chega a listar o resultado mas dá erro na tela.
No delphi usando o tquery e não dá o erro...
Como segue um exemplo básico:
select campo1 from tabela1
union all
select campo1 from tabela1
É assim mesmo?
Uso o firebird 1.5
count of column list and variable list do not match
Chega a listar o resultado mas dá erro na tela.
No delphi usando o tquery e não dá o erro...
Como segue um exemplo básico:
select campo1 from tabela1
union all
select campo1 from tabela1
É assim mesmo?
Uso o firebird 1.5
Briciosm
Curtidas 0
Respostas
Wilharlley
28/01/2009
Meu amigo! Seria melhor se você colocasse o seu código para podermos analisar mais detalhadamente. Mas, pela mensagem você está retornando um valor para um número diferente de campos. Tem que ser a mesma quantidade para ambos.
GOSTEI 0
Gentil Fachi
28/01/2009
Também estou com esse problema.
Alterei o Client Dialect para 3 e o erro persiste.
Quanto a Cast, tentei de todo tipo e em todos os campos, e o erro também persiste.
Sem o Cast:
select 1 as campo1, A.campo2 from Tabela1 A
Union
select 2 as campo2, B.campo2 from Tabela1 B
Com o Cast:
select Cast('1' as Numeric) as campo1, Cast(A.campo2 as Varchar(1)) as Campo2 from Tabela1 A
Union
select Cast('2' as Numeric) as campo2, Cast(B.campo2 as Varchar(1)) as Campo2 from Tabela1 B
E o erro é o mesmo: 'Invalid command count of column list and variable list do not match'
Alguém tem alguma idéia do que seja isso?
Alterei o Client Dialect para 3 e o erro persiste.
Quanto a Cast, tentei de todo tipo e em todos os campos, e o erro também persiste.
Sem o Cast:
select 1 as campo1, A.campo2 from Tabela1 A
Union
select 2 as campo2, B.campo2 from Tabela1 B
Com o Cast:
select Cast('1' as Numeric) as campo1, Cast(A.campo2 as Varchar(1)) as Campo2 from Tabela1 A
Union
select Cast('2' as Numeric) as campo2, Cast(B.campo2 as Varchar(1)) as Campo2 from Tabela1 B
E o erro é o mesmo: 'Invalid command count of column list and variable list do not match'
Alguém tem alguma idéia do que seja isso?
GOSTEI 0
Wilson Junior
28/01/2009
As colunas devem ter o mesmo alias
Espero ter colaborado.
select
Cast('1' as Numeric) as campo1,
Cast(A.campo2 as Varchar(1)) as Campo2
from
Tabela1 A
Union
select
Cast('2' as Numeric) as campo2, /* aqui deve ser campo1*/
Cast(B.campo2 as Varchar(1)) as Campo2
from
Tabela1 B
Espero ter colaborado.
GOSTEI 0
Gentil Fachi
28/01/2009
Também estou com esse problema.
Alterei o Client Dialect para 3 e o erro persiste.
Quanto a Cast, tentei de todo tipo e em todos os campos, e o erro também persiste.
Sem o Cast:
select 1 as campo1, A.campo2 from Tabela1 A
Union
select 2 as campo1, B.campo2 from Tabela1 B
Com o Cast:
select Cast('1' as Numeric) as campo1, Cast(A.campo2 as Varchar(1)) as Campo2 from Tabela1 A
Union
select Cast('2' as Numeric) as campo1, Cast(B.campo2 as Varchar(1)) as Campo2 from Tabela1 B
E o erro é o mesmo: 'Invalid command count of column list and variable list do not match'
Alguém tem alguma idéia do que seja isso?
Alterei o Client Dialect para 3 e o erro persiste.
Quanto a Cast, tentei de todo tipo e em todos os campos, e o erro também persiste.
Sem o Cast:
select 1 as campo1, A.campo2 from Tabela1 A
Union
select 2 as campo1, B.campo2 from Tabela1 B
Com o Cast:
select Cast('1' as Numeric) as campo1, Cast(A.campo2 as Varchar(1)) as Campo2 from Tabela1 A
Union
select Cast('2' as Numeric) as campo1, Cast(B.campo2 as Varchar(1)) as Campo2 from Tabela1 B
E o erro é o mesmo: 'Invalid command count of column list and variable list do not match'
Alguém tem alguma idéia do que seja isso?
GOSTEI 0
Gentil Fachi
28/01/2009
Desculpe-me, escrevi errado na hora de colocar no fórum.
O erro acontece mesmo com as colunas corretas.
Com Cast e sem Cast.
Segue Código:
select 1 as campo1, A.campo2 from Tabela1 A
Union
select 2 as campo1, B.campo2 from Tabela1 B
Agradeço pela ajuda.
O erro acontece mesmo com as colunas corretas.
Com Cast e sem Cast.
Segue Código:
select 1 as campo1, A.campo2 from Tabela1 A
Union
select 2 as campo1, B.campo2 from Tabela1 B
Agradeço pela ajuda.
GOSTEI 0
Emerson Nascimento
28/01/2009
isso por acaso é um for select ?
se é, você precisa ter o mesmo número de variáveis para receber os dados.
por exemplo:
for
select 1, A.campo2 from Tabela1 A
union all
select 2, B.campo2 from Tabela1 B
into :vcampo1, :vcampo2
como há dois campos, deve-se indicar duas variáveis para receber os valores.
for
select A.campo2 from Tabela1 A
union all
select B.campo2 from Tabela1 B
into :vcampo
como há 1 campo, deve-se indicar 1 variável para receber o valor.
se é, você precisa ter o mesmo número de variáveis para receber os dados.
por exemplo:
for
select 1, A.campo2 from Tabela1 A
union all
select 2, B.campo2 from Tabela1 B
into :vcampo1, :vcampo2
como há dois campos, deve-se indicar duas variáveis para receber os valores.
for
select A.campo2 from Tabela1 A
union all
select B.campo2 from Tabela1 B
into :vcampo
como há 1 campo, deve-se indicar 1 variável para receber o valor.
GOSTEI 0
Ricardo Araujo
28/01/2009
bom dia,
Caro Colega, da uma olhada neste,
link :http://www.linhadecodigo.com.br/artigo/945/SQL-Utilizando-o-Operador-UNION-e-UNION-ALL.aspx
neste link tem uns exemplo legal.
Espero te ajudando.
GOSTEI 0