Instrução SQL
Para selecionar os itens de uma venda, tenho a seguinte consulta SQL em uma query:
´
SELECT VENDAMESTRE.*, VENDADETALHE.*,
PRODUTOS.DESCRICAO AS DESCRICAOPRODUTO FROM VENDAMESTRE
INNER JOIN VENDADETALHE ON (VENDAMESTRE.CODIGOMESTRE =
VENDADETALHE.CODIGOMESTRE)
INNER JOIN PRODUTOS ON (VENDADETALHE.PRODUTO = PRODUTOS.CODIGO)
WHERE
VENDAMESTRE.DATA BETWEEN :VDtInicial and :VDtFinal
´
Funciona beleza.
As tabelas vendamestre e vendadetalhe referem-se às vendas de produtos. Mas tenho venda de produtos também no módulo serviços, onde junto com serviços, também são vendidos itens de produtos iguais aos da venda normal. São as tabelas SERVICOSMESTRE E SERVICOSPECAS.
O que eu preciso agora é nessa mesma instrução sql, incluir os itens da tabela SERVICOPECAS que é detalhe da tabela SERVICOMESTRE.
Isso é possível? Como ficaria a instrução SQL?
Obrigado.
´
SELECT VENDAMESTRE.*, VENDADETALHE.*,
PRODUTOS.DESCRICAO AS DESCRICAOPRODUTO FROM VENDAMESTRE
INNER JOIN VENDADETALHE ON (VENDAMESTRE.CODIGOMESTRE =
VENDADETALHE.CODIGOMESTRE)
INNER JOIN PRODUTOS ON (VENDADETALHE.PRODUTO = PRODUTOS.CODIGO)
WHERE
VENDAMESTRE.DATA BETWEEN :VDtInicial and :VDtFinal
´
Funciona beleza.
As tabelas vendamestre e vendadetalhe referem-se às vendas de produtos. Mas tenho venda de produtos também no módulo serviços, onde junto com serviços, também são vendidos itens de produtos iguais aos da venda normal. São as tabelas SERVICOSMESTRE E SERVICOSPECAS.
O que eu preciso agora é nessa mesma instrução sql, incluir os itens da tabela SERVICOPECAS que é detalhe da tabela SERVICOMESTRE.
Isso é possível? Como ficaria a instrução SQL?
Obrigado.
Valdirdill
Curtidas 0
Respostas
Emerson Nascimento
08/03/2005
talvez com union seu problema seja resolvido:
SELECT VENDAMESTRE.*, VENDADETALHE.*,
PRODUTOS.DESCRICAO AS DESCRICAOPRODUTO
FROM VENDAMESTRE
INNER JOIN VENDADETALHE ON (VENDAMESTRE.CODIGOMESTRE =
VENDADETALHE.CODIGOMESTRE)
INNER JOIN PRODUTOS ON (VENDADETALHE.PRODUTO = PRODUTOS.CODIGO)
WHERE
VENDAMESTRE.DATA BETWEEN :VDtInicial and :VDtFinal
UNION ALL
SELECT SERVICOMESTRE.*, SERVICOPECAS.*,
PRODUTOS.DESCRICAO AS DESCRICAOPRODUTO
FROM SERVICOMESTRE
INNER JOIN SERVICOPECAS ON (SERVICOPECAS.CODIGOMESTRE =
SERVICOMESTRE.CODIGOMESTRE)
INNER JOIN PRODUTOS ON (PRODUTOS.CODIGO = SERVICOPECAS.PRODUTO)
WHERE
SERVICOMESTRE.DATA BETWEEN :VDtInicial and :VDtFinal
SELECT VENDAMESTRE.*, VENDADETALHE.*,
PRODUTOS.DESCRICAO AS DESCRICAOPRODUTO
FROM VENDAMESTRE
INNER JOIN VENDADETALHE ON (VENDAMESTRE.CODIGOMESTRE =
VENDADETALHE.CODIGOMESTRE)
INNER JOIN PRODUTOS ON (VENDADETALHE.PRODUTO = PRODUTOS.CODIGO)
WHERE
VENDAMESTRE.DATA BETWEEN :VDtInicial and :VDtFinal
UNION ALL
SELECT SERVICOMESTRE.*, SERVICOPECAS.*,
PRODUTOS.DESCRICAO AS DESCRICAOPRODUTO
FROM SERVICOMESTRE
INNER JOIN SERVICOPECAS ON (SERVICOPECAS.CODIGOMESTRE =
SERVICOMESTRE.CODIGOMESTRE)
INNER JOIN PRODUTOS ON (PRODUTOS.CODIGO = SERVICOPECAS.PRODUTO)
WHERE
SERVICOMESTRE.DATA BETWEEN :VDtInicial and :VDtFinal
GOSTEI 0
Emerson Nascimento
08/03/2005
uma observação: só será possivel a seleção de todos os campos caso as tabelas sejam idênticas. o ideal seria exibir somente os campos necessários, desde que haja campos iguais em ambas tabelas.
GOSTEI 0