Sub Select no Firebird 1.0
Tenho uma versão antiga do meu sistema que ainda usa Firebird 1.0 e preciso rodar um Sub Select que já funciona no Firebird 2.1, porém na versão 1 está apresentando problema, não reconhece o SubSelect.
Como posso adaptá-lo para rodar no fire 1.0 ?
Obrigada
SELECT A.FUNCIONARIO, A.ITEM, B.DESCRICAO, A.TAMANHO, A.QTDE, CAST(A.DATA AS DATE) AS DATA
FROM (
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM1 AS ITEM, C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM2 AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM3 AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM4 AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.BORDA AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
A, CARDAPIO B WHERE A.ITEM = B.CODIGO
FROM (
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM1 AS ITEM, C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM2 AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM3 AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.ITEM4 AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
UNION ALL
SELECT C.QTDE, C.FUNCIONARIO, C.BORDA AS ITEM, C.TAMANHO, CAST(C.DATA AS DATE) AS DATA
FROM COMANDAS_ITENS_CONSULTA C
WHERE C.DATA BETWEEN :DATAINI AND :DATAFIM AND C.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM AND
C.FUNCIONARIO <> :BRANCO AND FILIAL = :FILIAL
A, CARDAPIO B WHERE A.ITEM = B.CODIGO
Silvia Berezin
Curtidas 0
Respostas
Rodrigo Mourão
03/02/2010
Olá Silvia,
Bem hoje eu trabalho com firebird, porem 2.0 e 2.1 nao cheguei a pegar o 1.0. Acredito que com uma view ou entao uma procedure selecional a gente possa conseguir algo.
Para que eu possa testar preciusaria que me mandasse o scrtip do bacno com alguns dados para teste. Com isso eu realizo alguns teste para tentar resolver o problema.
Voce pode utilizar o disco virtual.
https://www.devmedia.com.br/imagens/videos/4/Video%20disco%20virtual.htm
No aguardo !!
Abs!!
GOSTEI 0
Silvia Berezin
03/02/2010
Oi Rodrigo
O arquivo está em
http://video.devmedia.com.br/discovirtual/45319/SilviaPchevuzinske/INFOCOOK.rar
Por gentileza, assim que responder, me mande um e-mail avisando, pois tenho que entrar no site da Devmedia para saber se já tem resposta.
Obrigada
Silvia
silvia@infosystem.com.br
GOSTEI 0
Silvia Berezin
03/02/2010
Rodrigo, recebeu meu arquivo ? Está no disco virtual, conforme você pediu.
GOSTEI 0
Rodrigo Mourão
03/02/2010
Recebi sim,
Estou baixando agora, irei analisar e logo lhe respondo.
Quanto a enviar email por ordem da administração todo o contato com o cliente deve ser fieto via sistema de consultoria. Lamento.
Att,
GOSTEI 0
Rodrigo Mourão
03/02/2010
Olá Desculpe a demora.
Bem tente o seguinte, primeiro crie a view:
CREATE VIEW VW_DADOS(
QTDE,
FUNCIONARIO,
ITEM,
TAMANHO,
DATA,
CAIXA,
FILIAL)
AS
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM1 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM2 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM3 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM4 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.BORDA AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C;
Este view faz os unios internos que estava no subselect. Feito isso faremos um join de cardapio com a view e parametrizamos no JOIN:
SELECT D.FUNCIONARIO, D.ITEM, C.DESCRICAO, D.TAMANHO, D.QTDE, D.DATA
FROM VW_DADOS D, CARDAPIO C
WHERE D.ITEM = C.CODIGO
AND D.DATA BETWEEN :DATAINI AND :DATAFIM
AND D.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM
AND D.FILIAL = :FILIAL
AND D.FUNCIONARIO <> :BRANCO
Espero ter ajudado!!!
Abs!!
Bem tente o seguinte, primeiro crie a view:
CREATE VIEW VW_DADOS(
QTDE,
FUNCIONARIO,
ITEM,
TAMANHO,
DATA,
CAIXA,
FILIAL)
AS
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM1 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM2 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM3 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.ITEM4 AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C
UNION ALL
SELECT C.QTDE,
C.FUNCIONARIO,
C.BORDA AS ITEM,
C.TAMANHO,
CAST(C.DATA AS DATE) AS DATA,
C.CAIXA,
C.FILIAL
FROM COMANDAS_ITENS_CONSULTA C;
Este view faz os unios internos que estava no subselect. Feito isso faremos um join de cardapio com a view e parametrizamos no JOIN:
SELECT D.FUNCIONARIO, D.ITEM, C.DESCRICAO, D.TAMANHO, D.QTDE, D.DATA
FROM VW_DADOS D, CARDAPIO C
WHERE D.ITEM = C.CODIGO
AND D.DATA BETWEEN :DATAINI AND :DATAFIM
AND D.CAIXA BETWEEN :CAIXAINI AND :CAIXAFIM
AND D.FILIAL = :FILIAL
AND D.FUNCIONARIO <> :BRANCO
Espero ter ajudado!!!
Abs!!
GOSTEI 0
Rodrigo Mourão
03/02/2010
Olá Silvia,
O Select ajudou ? Podemos encerrar o chamado ?
Att,
O Select ajudou ? Podemos encerrar o chamado ?
Att,
GOSTEI 0