Não Traz dados

08/09/2022

0

Faço essa consulta mas quando executo vem em branco
SELECT gb_produtotratamento.IdCustoTartamento, 
		 gb_custotratamento.DateTratamento,
		 gb_produtotratamento.idGrupo,
		 gb_grupo.Descricao AS 'DescriçãoG',
		 gb_produtotratamento.IdSubGrupo,
		 gb_subgrupo.Descricao AS 'Descrição do Subgrupo',
		 gb_produtotratamento.Produto,
		 gb_produto.DESCRICAO AS 'Descrição do Produto',
		 gb_produtotratamento.M3,
		 gb_produtotratamento.Quantidade,
		 gb_produtotratamento.Subtotal
FROM ((((gb_custotratamento INNER JOIN gb_produtotratamento ON(gb_custotratamento.idCustoTratamento=gb_produtotratamento.IdCustoTartamento)
									 INNER JOIN gb_grupo ON(gb_produtotratamento.idGrupo=gb_grupo.IdGrupo)
									 INNER JOIN gb_subgrupo ON(gb_produtotratamento.IdSubGrupo=gb_subgrupo.IdSubGrupo)
									 INNER JOIN gb_produto ON(gb_produtotratamento.Produto=gb_produto.IdProduto)))))
WHERE DateTratamento BETWEEN :dti AND :dtf
Salomao.coelho

Salomao.coelho

Responder

Posts

08/09/2022

Emerson Nascimento

há dados em todas as tabelas envolvidas?
como você usou INNER JOIN, se não houver informação (baseada no relacionamento) em qualquer das tabelas, não haverá retorno de dados.

Responder

08/09/2022

Salomao.coelho

há dados em todas as tabelas envolvidas?
como você usou INNER JOIN, se não houver informação (baseada no relacionamento) em qualquer das tabelas, não haverá retorno de dados.

sim ha dados em todas as tabelas
Responder

08/09/2022

Emerson Nascimento

SELECT
	prodtrat.IdCustoTartamento,
	custo.DateTratamento,
	prodtrat.idGrupo,
	gb_grupo.Descricao AS 'DescriçãoG',
	prodtrat.IdSubGrupo,
	sgrupo.Descricao AS 'Descrição do Subgrupo',
	prodtrat.Produto,
	prod.DESCRICAO AS 'Descrição do Produto',
	prodtrat.M3,
	prodtrat.Quantidade,
	prodtrat.Subtotal
FROM
	gb_custotratamento custo
LEFT JOIN
	gb_produtotratamento prodtrat ON
	prodtrat.IdCustoTartamento = custo.idCustoTratamento
LEFT JOIN
	gb_grupo ON
	gb_grupo.IdGrupo = prodtrat.idGrupo
LEFT JOIN
	gb_subgrupo sgrupo ON
	sgrupo.IdSubGrupo = prodtrat.IdSubGrupo
LEFT JOIN
	gb_produto prod ON
	prod.IdProduto = prodtrat.Produto
WHERE
	custo.DateTratamento BETWEEN :dti AND :dtf


note que eu troquei todos os INNER JOIN por LEFT JOIN.
execute a consulta assim.

se retornar NÃO retornar dados, há um problema na condição da consulta (WHERE).

se retornar dados, então vá trocando os LEFT por INNER, um de cada vez e executando a consulta após a troca.
Entendeu o esquema? Troque um LEFT por INNER e execute. Quando não retornar dados você terá encontrado a tabela/relacionamento problemático.
Responder

09/09/2022

Salomao.coelho

SELECT
	prodtrat.IdCustoTartamento,
	custo.DateTratamento,
	prodtrat.idGrupo,
	gb_grupo.Descricao AS ''DescriçãoG'',
	prodtrat.IdSubGrupo,
	sgrupo.Descricao AS ''Descrição do Subgrupo'',
	prodtrat.Produto,
	prod.DESCRICAO AS ''Descrição do Produto'',
	prodtrat.M3,
	prodtrat.Quantidade,
	prodtrat.Subtotal
FROM
	gb_custotratamento custo
LEFT JOIN
	gb_produtotratamento prodtrat ON
	prodtrat.IdCustoTartamento = custo.idCustoTratamento
LEFT JOIN
	gb_grupo ON
	gb_grupo.IdGrupo = prodtrat.idGrupo
LEFT JOIN
	gb_subgrupo sgrupo ON
	sgrupo.IdSubGrupo = prodtrat.IdSubGrupo
LEFT JOIN
	gb_produto prod ON
	prod.IdProduto = prodtrat.Produto
WHERE
	custo.DateTratamento BETWEEN :dti AND :dtf


note que eu troquei todos os INNER JOIN por LEFT JOIN.
execute a consulta assim.

se retornar NÃO retornar dados, há um problema na condição da consulta (WHERE).

se retornar dados, então vá trocando os LEFT por INNER, um de cada vez e executando a consulta após a troca.
Entendeu o esquema? Troque um LEFT por INNER e execute. Quando não retornar dados você terá encontrado a tabela/relacionamento problemático.
Responder

09/09/2022

Salomao.coelho

SELECT
	prodtrat.IdCustoTartamento,
	custo.DateTratamento,
	prodtrat.idGrupo,
	gb_grupo.Descricao AS ''DescriçãoG'',
	prodtrat.IdSubGrupo,
	sgrupo.Descricao AS ''Descrição do Subgrupo'',
	prodtrat.Produto,
	prod.DESCRICAO AS ''Descrição do Produto'',
	prodtrat.M3,
	prodtrat.Quantidade,
	prodtrat.Subtotal
FROM
	gb_custotratamento custo
LEFT JOIN
	gb_produtotratamento prodtrat ON
	prodtrat.IdCustoTartamento = custo.idCustoTratamento
LEFT JOIN
	gb_grupo ON
	gb_grupo.IdGrupo = prodtrat.idGrupo
LEFT JOIN
	gb_subgrupo sgrupo ON
	sgrupo.IdSubGrupo = prodtrat.IdSubGrupo
LEFT JOIN
	gb_produto prod ON
	prod.IdProduto = prodtrat.Produto
WHERE
	custo.DateTratamento BETWEEN :dti AND :dtf


note que eu troquei todos os INNER JOIN por LEFT JOIN.
execute a consulta assim.

se retornar NÃO retornar dados, há um problema na condição da consulta (WHERE).

se retornar dados, então vá trocando os LEFT por INNER, um de cada vez e executando a consulta após a troca.
Entendeu o esquema? Troque um LEFT por INNER e execute. Quando não retornar dados você terá encontrado a tabela/relacionamento problemático.


RESOLVIDO - era a Where os dados chegavam no formato dd/mm/yyyy e o Babco de dados não reconhecia tive que criar Format('yyyy-mm-dd', campo)
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar