Consulta UNION
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.
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.
comentários (0)
suspender
Lista de Respostas:
23/06/2010 11:14am
(~1 ano atrás)
(~1 ano atrás)
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
21/06/2010 9:47pm
(~1 ano atrás)
(~1 ano atrás)
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,
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,
22/06/2010 9:38am
(~1 ano atrás)
(~1 ano atrás)
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;
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;
23/06/2010 9:20pm
(~1 ano atrás)
(~1 ano atrás)
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?
Incorrect usage of UNION and ORDER BY
Tem como eu fazer uma query com base em outra query?
03/07/2010 4:34pm
(~1 ano atrás)
(~1 ano atrás)
Marcos, misteriosamente o script começou a funcionar. Obrigado pela dica!

respondeu: