Pergunta

Eu estou modificando uma consulta HQL existente que retorna colunas individuais em vez de um gráfico de objeto, mas agora eu não estou recebendo todas as linhas que eu preciso.

Aqui alguns fatos sobre o esquema atual:

  • Uma estimativa pertence a um contrato.
  • A propriedade OwningDepartment de um contrato pode ser nulo.
  • A propriedade ParentBusinessStream de um departamento não pode ser nulo

Esta é a consulta:

select e.ID, e.StatusCode.ID, e.InputDate, e.ParentClient.Name, e.ParentContractLocation.ParentLocation.Description, e.Description, e.InternalRef, e.ExternalRef, e.TotalIncTax, e.TaxTotal, e.Closed, e.ViewedByClient, e.HelpdeskRef, e.ParentContract.Reference, d.ParentBusinessStream.Title, d.Name
from Estimate e, Department d where (e.ParentContract.ID in (select cs.ParentContract.ID from ContractStaff cs
where cs.ParentStaff.ID=:staffID)) and ((d.ID = e.ParentContract.OwningDepartment.ID) OR (d.ID is null)) order by e.ID

Infelizmente a minha consulta é não retornando Estimativas quando o contrato pai não tem um departamento de possuir. Em vez disso eu quero os campos relevantes para apenas ser nulo. Eu tentei uma junção externa esquerda, mas tem os mesmos resultados.

Qualquer ajuda seria muito apreciado. Desculpas se eu fiz algo estúpido.

Cheers,

James

Foi útil?

Solução 2

Eu acho que eu tenho trabalhado para fora: d.ParentBusinessStream.Title é uma junção interna implícita mas desde que d pode ser nulo não funciona corretamente. Eu mudei minha consulta para levar isso em conta

Outras dicas

Descobri que consultas incomuns contendo externa esquerda junta é melhor fora usando um ISQLQuery que lhe dá acesso à sintaxe SQL adequada, bem como algum poder HQL.

Além disso, você não fornecer arquivos de mapeamento que geralmente são úteis

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top