Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta SQL para recuperar registros condicionalmente com base em uma lista de valores de chave


O desafio aqui é que você precisa passar esses valores recuperados de uma resposta da API para sua instrução SQL como entrada e gerar saída criando dinamicamente nenhuma comparação com base na entrada.

Agora, se eu estivesse familiarizado com sua plataforma de back-end do que teria dado uma solução mais adequada, mas como não sei com o Node.js, minha solução incluirá apenas instruções SQL necessárias e a parte restante que você precisa FAÇA VOCÊ MESMO.

A primeira coisa que você precisa fazer é analisar essa resposta da API e armazenar esses valores em uma estrutura de dados.

Agora, crie uma Temporary table no seu Node.js codificar e armazenar esses valores de entrada nesta tabela.
  CREATE TEMPORARY TABLE Input (id INT, value INT);

Adicione dados dessa estrutura de dados a esta tabela.

Agora, execute a seguinte consulta e você obterá o que deseja:
SELECT skp.quest_id
FROM SKILL_PREREQUISITES skp 
GROUP BY quest_id
HAVING COUNT(skp.quest_id) =
                     ( SELECT COUNT(quest_id)
                       FROM Input i
                       JOIN SKILL_PREREQUISITES sp
                       ON sp.prerequisite_skill_id = i.id
                       AND sp.skill_value <= i.value
                       WHERE skp.quest_id = sp.quest_id
                      )

Fiddle de demonstração