Não Traz dados

MySQL

CRUD - Delphi

08/09/2022

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

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

08/09/2022

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.

GOSTEI 0
Salomao.coelho

Salomao.coelho

08/09/2022

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
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

08/09/2022

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.
GOSTEI 0
Salomao.coelho

Salomao.coelho

08/09/2022

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.
GOSTEI 0
Salomao.coelho

Salomao.coelho

08/09/2022

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)
GOSTEI 0
POSTAR