Erro na sintaxe do SQL?

Firebird

13/04/2007

Pessoal, alguem pode me dizer qual o motivo do erro na syntaxe desta SQL?
Olhem o erro que acusa!

[b:8aa86d6a2c]Dynamic SQL Error
SQL code error = -104
Token unknown -line 4, column 14
[.[/b:8aa86d6a2c]

Olhe como fiz o select
SELECT C.GRAUD AS GRAU, C.valor_A, C.valor_b, (C.valor_A - C.valor_b) AS SALDO FROM (SELECT A1.GRAUD, A1.valor_A, B1.GRAUC, B1.valor_b FROM (SELECT [color=red:8aa86d6a2c][TGRAU1_D][/color:8aa86d6a2c].[GRAUD], sum([TGRAU1_D].valor) AS valor_A FROM TGRAU1_D GROUP BY [TGRAU1_D].[GRAUD] )AS A1, (SELECT [TGRAU1_C].[GRAUC], SUM([TGRAU1_C].valor) AS valor_b FROM TGRAU1_C GROUP BY [TGRAU1_C].[GRAUC] ) AS B1) AS C WHERE C.GRAUD=C.GRAUC
Me parece que o erro esta na linha em vermelho acima.

Grato
Adriano


Adriano_servitec

Adriano_servitec

Curtidas 0

Respostas

Adriano_servitec

Adriano_servitec

13/04/2007

Olah pessoal, ja descubri o erro
O correto eh assim
SELECT C.GRAUD AS GRAU, C.valor_A, C.valor_b, 
(C.valor_A - C.valor_b) AS SALDO 
FROM (SELECT A1.GRAUD, A1.valor_A, B1.GRAUC, B1.valor_b 
FROM (SELECT TGRAU1_D.GRAUD, sum(TGRAU1_D.valor) AS 
valor_A FROM TGRAU1_D GROUP BY TGRAU1_D.GRAUD) AS A1, 
(SELECT TGRAU1_C.GRAUC, SUM(TGRAU1_C.valor) AS valor_b FROM TGRAU1_C GROUP BY TGRAU1_C.GRAUC ) AS B1) AS C 
WHERE C.GRAUD=C.GRAUC 


:oops:


GOSTEI 0
Adriano_servitec

Adriano_servitec

13/04/2007

Bom o select acima inclui resultado de duas tabelas, mais agora me veio a necessidade de incluir 4 tabelas numa soh grid

as duas primeiras estao como o post acima, ai fiz mais outra com da mesma maneira
SELECT C.GRAU2D AS GRAU, C.valor_A, C.valor_b, 
(C.valor_A - C.valor_b) AS SALDO 
FROM (SELECT A1.GRAU2D, A1.valor_A, B1.GRAU2C, B1.valor_b 
FROM (SELECT TGRAU2_D.GRAU2D, sum(TGRAU2_D.valor) AS 
valor_A FROM TGRAU2_D GROUP BY TGRAU2_D.GRAU2D) AS A1, 
(SELECT TGRAU2_C.GRAU2C, SUM(TGRAU2_C.valor) AS valor_b FROM TGRAU2_C GROUP BY TGRAU2_C.GRAU2C ) AS B1) AS C 
WHERE C.GRAU2D=C.GRAU2C 
soh mudando o nome dos campos


Bom a pergunta eh, como unir esses select num soh para mostrar o resultado num dbgrid?

Tentei assim mais ta longe de ser um select
SELECT C.GRAUD AS GRAU, C.valor_A, C.valor_b, 
(C.valor_A - C.valor_b) AS SALDO 

FROM (SELECT A1.GRAUD, A1.valor_A, B1.GRAUC, B1.valor_b, A1.GRAU2D, A1.valor_A, B1.GRAU2C, B1.valor_b
 
FROM (SELECT TGRAU1_D.GRAUD, sum(TGRAU1_D.valor) AS 
valor_A FROM TGRAU1_D,TGRAU2_D.GRAU2D, sum(TGRAU2_D.valor) AS 
valor_A FROM TGRAU2_D GROUP BY TGRAU1_D.GRAUD and TGRAU2_D.GRAU2D) AS A1, 

(SELECT TGRAU1_C.GRAUC, SUM(TGRAU1_C.valor) AS valor_b FROM TGRAU1_C, TGRAU2_C.GRAU2C, SUM(TGRAU2_C.valor) AS valor_b FROM TGRAU2_C  GROUP BY TGRAU1_C.GRAUC and TGRAU2_C.GRAU2C ) AS B1) AS C

WHERE C.GRAUD=C.GRAUC and C.GRAU2D=C.GRAU2C 

Mais acho que a ideia começa por ai.

Agradeço a ajuda de todos
Adriano

[b:a78206985b]Estou usando firebird 2.0[/b:a78206985b]


GOSTEI 0
Adriano_servitec

Adriano_servitec

13/04/2007

Topo


GOSTEI 0
Adriano_servitec

Adriano_servitec

13/04/2007

Ja consegui
SELECT C.GRAUD AS GRAU, C.valor_A, C.valor_b,
(C.valor_A - C.valor_b) AS SALDO
FROM (SELECT A1.GRAUD, A1.valor_A, B1.GRAUC, B1.valor_b
FROM (SELECT TGRAU1_D.GRAUD, sum(TGRAU1_D.valor) AS
valor_A FROM TGRAU1_D GROUP BY TGRAU1_D.GRAUD) AS A1,
(SELECT TGRAU1_C.GRAUC, SUM(TGRAU1_C.valor) AS valor_b
FROM TGRAU1_C GROUP BY TGRAU1_C.GRAUC ) AS B1) AS C
WHERE C.GRAUD=C.GRAUC

union

SELECT C.GRAU2D AS GRAU, C.valor_A, C.valor_b,
(C.valor_A - C.valor_b) AS SALDO
FROM (SELECT A1.GRAU2D, A1.valor_A, B1.GRAU2C, B1.valor_b
FROM (SELECT TGRAU2_D.GRAU2D, sum(TGRAU2_D.valor) AS
valor_A FROM TGRAU2_D GROUP BY TGRAU2_D.GRAU2D) AS A1,
(SELECT TGRAU2_C.GRAU2C, SUM(TGRAU2_C.valor) AS valor_b
FROM TGRAU2_C GROUP BY TGRAU2_C.GRAU2C ) AS B1) AS C
WHERE C.GRAU2D=C.GRAU2C

union

SELECT C.GRAU3D AS GRAU, C.valor_A, C.valor_b,
(C.valor_A - C.valor_b) AS SALDO
FROM (SELECT A1.GRAU3D, A1.valor_A, B1.GRAU3C, B1.valor_b
FROM (SELECT TGRAUSUPD.GRAU3D, sum(TGRAUSUPD.valor) AS
valor_A FROM TGRAUSUPD GROUP BY TGRAUSUPD.GRAU3D) AS A1,
(SELECT TGRAUSUPC.GRAU3C, SUM(TGRAUSUPC.valor) AS valor_b
FROM TGRAUSUPC GROUP BY TGRAUSUPC.GRAU3C) AS B1) AS C
WHERE C.GRAU3D=C.GRAU3C


Valeu


GOSTEI 0
POSTAR