sql >> Database >  >> RDS >> Mysql

SQL-query om records voorwaardelijk op te halen op basis van een lijst met sleutelwaarden

De uitdaging hier is dat u deze waarden die zijn opgehaald uit een API-antwoord moet doorgeven aan uw SQL-instructie als invoer en uitvoer moet genereren door dynamisch geen vergelijkingen te maken op basis van de invoer.

Nu, als ik bekend zou zijn geweest met uw back-endplatform dan zou ik een meer geschikte oplossing hebben gegeven, maar zoals ik niet weet met Node.js, zal mijn oplossing alleen de vereiste SQL-instructies bevatten en het resterende deel dat u nodig hebt Doe-het-zelf.

Het eerste dat u hoeft te doen, is dit API-antwoord te ontleden en deze waarden op te slaan in een gegevensstructuur.

Maak nu een Temporary table in van uw Node.js code en sla deze invoerwaarden op in deze tabel.

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

Voeg gegevens uit die gegevensstructuur toe aan deze tabel.

Voer nu de volgende query uit en je krijgt wat je wilt:

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
                      )

Demo Fiddle



  1. Is het mogelijk om gegevens in een MySQL-weergave in te voegen?

  2. Aanroep naar ongedefinieerde functie session_register()

  3. Converteer seconden naar voor mensen leesbare tijdsduur

  4. Opgeslagen procedure oproepen met VBA