sql >> Databasteknik >  >> RDS >> Mysql

SQL-fråga för att villkorligt hämta poster baserat på en nyckelvärdeslista

Utmaningen här är att du måste skicka dessa värden som hämtats från ett API-svar till din SQL-sats som indata och generera utdata genom att dynamiskt skapa inga jämförelser baserat på indata.

Om jag nu skulle ha bekantat mig med din back-end-plattform än jag skulle ha gett en mer passande lösning, men som jag inte vet med Node.js, kommer min lösning bara att innehålla nödvändiga SQL-satser och den återstående delen du behöver för att DIY.

Det första du behöver göra är att analysera detta API-svar och lagra dessa värden i en datastruktur.

Skapa nu en Temporary table från din Node.js kod och lagra dessa indatavärden i den här tabellen.

  CREATE TEMPORARY TABLE Input (id INT, value INT);

Lägg till data från den datastrukturen till den här tabellen.

Kör nu följande fråga så får du vad du vill ha:

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
                      )

Demofiol



  1. Hur man skapar användare i MySQL

  2. autoslutförande visar alla poster, gör ingen sökning

  3. MySQL ställer in unika_kontroller, ställer in främmande_nyckel_kontroller vs. avaktivera nycklar för ändra tabeller

  4. Hur man hittar SQL Server Agent-jobb i Azure Data Studio