SQL com UNION
Colegas,
Afinal, quando eu posso usar ORDER BY com UNION no Interbase 7.1??
Postei em um topico anterior mas ninguem respondeu... Tentei aproveitar o topico de uma colega, mas...
[]´s
Afinal, quando eu posso usar ORDER BY com UNION no Interbase 7.1??
Postei em um topico anterior mas ninguem respondeu... Tentei aproveitar o topico de uma colega, mas...
[]´s
Michaell
Curtidas 0
Respostas
Sremulador
16/11/2004
Em cada finalização de union você pode colocar ou então crie uma view e coloque no final da pesquisa ...
GOSTEI 0
Michaell
16/11/2004
Em cada finalização de union você pode colocar ou então crie uma view e coloque no final da pesquisa ...
Tenho, supostamente, três tabelas:
1) ENTRADAS (CODIGO INTEGER, DATA_CADASTRO TIMESTAMP, QUANTIDADE INTEGER);
2) SAIDAS (CODIGO INTEGER, DATA TIMESTAMP, QUANTIDADE INTEGER);
3) INVENTARIO (CODIGO, DATA TIMESTAMP, QUANTIDADE INTEGER).
Se eu fizer os 2 UNIONS no meu comando SQL colocando os ORDER BY como você disse, não funciona, dá erro...
Poderia me dar um exemplo?
[]´s
GOSTEI 0
Gandalf.nho
16/11/2004
Pelo que me lembro, ele só aceita ORDER BY no final da SQL.
GOSTEI 0
Michaell
16/11/2004
Pelo que me lembro, ele só aceita ORDER BY no final da SQL.
Assim?
SELECT R.CODIGO, R.DATA_CADASTRO, RP.QUANTIDADE FROM REQUISICAO R INNER JOIN REQUISICAO_PRODUTO RP ON RP.REQUISICAO = R.CODIGO WHERE RP.PRODUTO = 1 UNION SELECT E.CODIGO, E.DATA_CADASTRO, EP.QUANTIDADE_NOTA FROM ENTRADA E INNER JOIN ENTRADA_PRODUTO EP ON EP.ENTRADA = E.CODIGO WHERE EP.PRODUTO = 1 ORDER BY R.DATA_CADASTRO, E.DATA_CADASTRO
Erro: ´Invalid command, invalid ORDER BY CLAUSE´
O que está errado em meu comando?
[]´s
GOSTEI 0
Gandalf.nho
16/11/2004
Você não se refere ao nome das tabelas no ORDER BY, faça assim:
SELECT
R.CODIGO,
R.DATA_CADASTRO,
RP.QUANTIDADE
FROM REQUISICAO R
INNER JOIN REQUISICAO_PRODUTO RP
ON RP.REQUISICAO = R.CODIGO
WHERE RP.PRODUTO = 1
UNION
SELECT
E.CODIGO,
E.DATA_CADASTRO,
EP.QUANTIDADE_NOTA
FROM ENTRADA E
INNER JOIN ENTRADA_PRODUTO EP
ON EP.ENTRADA = E.CODIGO
WHERE EP.PRODUTO = 1
ORDER BY DATA_CADASTRO
SELECT
R.CODIGO,
R.DATA_CADASTRO,
RP.QUANTIDADE
FROM REQUISICAO R
INNER JOIN REQUISICAO_PRODUTO RP
ON RP.REQUISICAO = R.CODIGO
WHERE RP.PRODUTO = 1
UNION
SELECT
E.CODIGO,
E.DATA_CADASTRO,
EP.QUANTIDADE_NOTA
FROM ENTRADA E
INNER JOIN ENTRADA_PRODUTO EP
ON EP.ENTRADA = E.CODIGO
WHERE EP.PRODUTO = 1
ORDER BY DATA_CADASTRO
GOSTEI 0
Afarias
16/11/2004
Pelo que me lembro, ele só aceita ORDER BY no final da SQL.
Exatamente!
O ORDER BY só aparece 1 vez no SELECT e é a última cláusula
Você não se refere ao nome das tabelas no ORDER BY
Na verdade vc pode se referir (e deve, especialmente em JOINS) mas o problema ai é o UNION, neste caso deve ser usada a posição do campo:
SELECT {...} ORDER BY 2
T+
GOSTEI 0
Gandalf.nho
16/11/2004
Quando eu me referi a não usar o nome das tabelas no ORDER BY, esqueci de dizer que era só em UNIONs, desculpe pela confusão.
GOSTEI 0
Afarias
16/11/2004
Quando eu me referi a não usar o nome das tabelas no ORDER BY, esqueci de dizer que era só em UNIONs, desculpe pela confusão.
;-)
GOSTEI 0
Michaell
16/11/2004
Na verdade vc pode se referir (e deve, especialmente em JOINS) mas o problema ai é o UNION, neste caso deve ser usada a posição do campo:
SELECT {...} ORDER BY 2
Agora foi... Valeu, pessoal! Ufa... :P
[]´s
GOSTEI 0