0

Consulta UNION

criado por Webster Moitinho em 17/06/2010 8:10pm
Estou tentando criar uma consulta UNION e não estou conseguindo. Tô usando o seguinte código:

SELECT ctsalini.id_plano, ctplano.conta, ctsalini.cgccpf, ctplano.descrconta, ctsalini.valor AS salini, 0 AS debito, 0 AS credito
FROM ctsalini
INNER JOIN ctplano ON ctsalini.id_plano = ctplano.id_plano
ORDER BY ctplano.conta, ctsalini.cgccpf;
UNION
SELECT ctlancto.id_plano, ctplano.conta, ctlancto.cgccpf, ctplano.descrconta, 0 AS salini, If([ctlancto].[tipolancto]='D',[ctlancto].[valor],0) AS debito, If([ctlancto].[tipolancto]='C',[ctlancto].[valor],0) AS credito
FROM ctplano INNER JOIN ctlancto ON ctplano.id_plano = ctlancto.[id_plano ];

Tá dando erro de sintaxe. Se alguem puder me ajudar eu agradeço.

Lista de Respostas:

+1
23/06/2010 11:14am
(~14 anos atrás)
Marcos Regis respondeu:
Tente assim
SELECT ctsalini.id_plano, ctplano.conta, ctsalini.cgccpf, ctplano.descrconta, ctsalini.valor AS salini, 0 AS debito, 0 AS credito
FROM ctsalini
INNER JOIN ctplano ON ctsalini.id_plano = ctplano.id_plano
ORDER BY ctplano.conta, ctsalini.cgccpf
UNION
SELECT ctlancto.id_plano, ctplano.conta, ctlancto.cgccpf, ctplano.descrconta, 0 AS salini,
If(ctlancto.tipolancto='D',ctlancto.valor,0) AS debito,
If(ctlancto.tipolancto='C',ctlancto.valor,0) AS credito
FROM ctplano
INNER JOIN ctlancto ON ctplano.id_plano = ctlancto.id_plano

0
21/06/2010 9:47pm
(~14 anos atrás)
Marcos Regis respondeu:
Isso é em MySQL ou MSSQL?

Se for MySQL nao use colchetes para os nomes das entidades e seus atributos.

If([ctlancto].[tipolancto]='D',[ctlancto].[valor],0) AS debito, está errado para MySQL.
o correto seria
If(ctlancto.tipolancto='D',ctlancto.valor,0) AS debito,

0
22/06/2010 9:38am
(~14 anos atrás)
Webster Moitinho respondeu:
Tem razão Marcos... mas eu corrigi o erro e continua dando erro de sintaxe. Meu código ficou assim:

SELECT ctsalini.id_plano, ctplano.conta, ctsalini.cgccpf, ctplano.descrconta, ctsalini.valor AS salini, 0 AS debito, 0 AS credito
FROM ctsalini
INNER JOIN ctplano ON ctsalini.id_plano = ctplano.id_plano
ORDER BY ctplano.conta, ctsalini.cgccpf;
UNION
SELECT ctlancto.id_plano, ctplano.conta, ctlancto.cgccpf, ctplano.descrconta, 0 AS salini,
If(ctlancto.tipolancto='D',ctlancto.valor,0) AS debito,
If(ctlancto.tipolancto='C',ctlancto.valor,0) AS credito
FROM ctplano
INNER JOIN ctlancto ON ctplano.id_plano = ctlancto.id_plano;


0
23/06/2010 9:20pm
(~14 anos atrás)
Webster Moitinho respondeu:
Marcos, mais uma vez obrigado pelo empenho. Agora tá dando

Incorrect usage of UNION and ORDER BY

Tem como eu fazer uma query com base em outra query?

0
03/07/2010 4:34pm
(~14 anos atrás)
Webster Moitinho respondeu:
Marcos, misteriosamente o script começou a funcionar. Obrigado pela dica!

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)