Premissa 01: O banco/tabela é do jeito que é mostrado, não será modificado. Premissa 02: Desempenho não é problema. Não interessa se a consulta possua subqueries ou o tempo de execução é 30ms, 40ms ou 3 seg.
Preciso realizar uma modificação/correção em uma consulta:
1) Para que serve a consulta? Para selecionar cadastros de um material de acordo com os parâmetros passados. Cada cadastro de material possui as seguintes informações: -tipo_rosca: definição principal do tipo do material, pode ser padrão, terminada em "F" de família, por exemplo "VTF" ou pode ser específica "VT1", "VT2". Os cadastros da família se aplicam a todos os casos específicos (Se não especificados).
-idc_inf_dimensional: Identificador de certo apontamento
-dim_ext_tubo, esp_par_tubo, idc_lado, cod_aco: Caracteísticas do material
-lim_inferior, lim_superior, alvo_inferior, alvo_superior: São o objetivo para a consulta. Para determinado tipo de rosca terei diversos apontamentos (idc_inf_dimensional) e seus respectivos limites.
2) Qual o objetivo principal da consulta? Imagine que eu possuo diversos tipos de produtos especificados na coluna tipo_rosca. Cada produto possui um cadastro padrão (família) e possui cadastros específico, por exemplo: Família "VTF", Derivações: "VT1, VT2, VT3", Família "VSJF", Derivações: "VSJ1, VSJ2, VSJ3", [...]
- A consulta deve ser realizada da seguinte forma: 1) Procura registros de acordo com os parâmetros do produto (lado, diâmetro, espessura, e tipo rosca padrão e específica). 2) Achou cadastro tanto para o tipo de rosca família e específica --> Recupera apenas o registro da específica, possui prioridade em relação ao cadastro padrão ou família 3) Achou cadastro apenas para o tipo de rosca família --> Recupera ele 3) Achou cadastro apenas para o tipo de rosca específico --> Recupera ele (****)
2) Qual o erro da consulta atual?
Não foi considerado a hipótese de haver cadastro específico, porém não existir cadastro padrão, o join não retornará este valor na consulta atual. Portanto a forma de realizar o join está ERRADA!
3) Por onde começo? - Script para criação da tabela e insert em anexo - Consulta atual em anexo (ELA É SEU PONTO DE PARTIDA PARA ENTENDER O PROBLEMA) - Planilha excel com exemplo prático de como os dados devem ser selecionados. ESTÁ COM EXTENSÃO .doc porque esta plataforma não permite anexar excel (.xlsx)
4) O tratamento da forma de recuperação dos dados poderia ser feito via código usando o System.Linq, porém estou dando prioridade para que a solução seja feita inteiramente na consulta:
Nós fazemos uso de cookies em nosso site para melhorar a sua experiência. Ao utilizar a 99Freelas, você aceita o uso de cookies de acordo com a nossa política de privacidade.
Ocorreu um erro inesperado. Caso o erro persista, entre em contato conosco através do e-mail suporte@99freelas.com.br.
Cancelar o ProjetoIniciar disputa relativa ao Projeto(Moderador)
Por favor, complete os dados obrigatórios.
Rejeitar Proposta
Por favor, complete os dados obrigatórios.
O freelancer será avisado e a proposta do projeto será marcada como rejeitada.
Por favor, complete os dados obrigatórios.
* Caso você precise de atendimento, por favor, envie uma mensagem para
suporte@99freelas.com.br.
Lembrete dos termos de usoAtenção
Por favor, complete os dados obrigatórios.
Detectamos que podem existir dados não permitidos na sua mensagem.
Detectamos que existem dados não permitidos na sua mensagem.
Caso você entenda que nós erramos e que não tenha infringido nenhuma regra da plataforma, basta enviar uma mensagem para o nosso suporte (suporte@99freelas.com.br) nos informando sobre o problema.
Aceitar proposta de
Após aceitar a proposta, você deverá efetuar o pagamento de garantia no valor da proposta. Esse valor ficará com a 99Freelas e somente será liberado para o freelancer após o trabalho ser concluído e aprovado por você.
* Não faça pagamentos fora da plataforma ou diretamente para o freelancer, pois dessa forma você estará quebrando as regras da plataforma e não estará protegido pela nossa garantia.
Além do(a) , você planeja contratar mais profissionais para este projeto?
Ao aceitar a proposta do(a) , as outras propostas serão rejeitadas automaticamente e o seu projeto ficará fechado para novas propostas.
Um novo projeto privado será aberto automaticamente para você trabalhar com o(a) e este projeto continuará aberto para receber novas propostas.
Nenhum ponto restante
Fechar o Projeto
Ao fechar o projeto, você pausará o recebimento de novas propostas. Aproveite esse tempo para analisar as propostas já recebidas.
O seu projeto poderá ser reaberto caso o tempo restante para o envio de propostas ainda não tiver expirado. Após ter expirado, você só poderá reabrir o projeto mediante pagamento de taxa.
* Se você deseja cancelar este projeto, por favor, utilize a opção "Cancelar".