Heim  >  Fragen und Antworten  >  Hauptteil

Wie füge ich mit der SQL-Anweisung INSERT INTO zwei verschiedene Arrays in eine Tabelle ein?

Es ist so lange her, seit ich mich mit SQL beschäftigt habe, dass ich es wieder ganz neu verwenden musste, als ich mein eigenes Videospiel entwickelte. Ich verwende MySQL und stoße hier auf einige komplexe Probleme.

Das sind meine beiden Arrays;

SET @myArrayofRaces = '"Dwarf", "Elf", "Halfling", "Human", "Dragonborn", "Gnome", "Half-Elf", "Half-Orc", "Tiefling"';
SET @myArrayofClasses = '"Barbarian", "Bard", "Cleric", "Druid", "Fighter", "Monk", "Paladin", "Ranger", "Rogue", "Sorcerer", "Warlock", "Wizard"';

Wie wir sehen können, habe ich 9 Spiele und 12 Klassen. Ich möchte diese Arrays zum Codieren einer INSERT INTO-Anweisung verwenden, damit ich nicht 108 Zeilen manuell eingeben muss.

Dies ist meine INSERT INTO-Anweisung, die ausgeführt wird;

INSERT INTO world_content.character_create_template (
        race,
        aspect,
        instance,
        pos_x,
        pos_y,
        pos_z,
        orientation,
        faction,
        autoAttack,
        race_icon,
        class_icon,
        race_description,
        class_description,
        isactive,
        respawnInstance,
        respawnPosX,
        respawnPosY,
        respawnPosZ,
        startingLevel,
        sprint 
    )
VALUES
    (
        437,
        428,
        29,
        - 170,
        74,
        154,
        0,
        1,
        - 1,
        "Assets/Resources/Assets/Icons/Race Icons/Dwarf.png",
        "Assets/Resources/Assets/Icons/Class Icons/Druid.png",
        "Dwarf",
        "Druid",
        1,
        29,
        - 170,
        74,
        154,
        1,
        - 1 
    )

Ich muss diese INSERT INTO-Anweisung in einer Schleife ausführen, bis ich alle 108 Rassen- und Klassenkombinationen abgeschlossen habe. Daher werden Zwerge in der Datenbank als jede Kategorie angezeigt. Dann wird der Elf in jede Klasse in der Datenbank eingefügt. Dann Halblinge, dann Menschen und so weiter.

Das Array „classes“ geht einfach in „class_description“ und „class_icon“ über und Sie können sehen, dass ich den Link zum Bild entferne. Das Rennen folgt auch dem Bild „race_icon“.

Weiß jemand, wie man das ArrayofRaces 12 Mal pro Rennen durchläuft, damit ich die Kategorien und Rennen einfach importieren kann?

Vielen Dank im Voraus!

P粉959676410P粉959676410244 Tage vor339

Antworte allen(1)Ich werde antworten

  • P粉505917590

    P粉5059175902024-02-18 17:51:12

    您可以使用交叉连接生成所有组合。例如:

    INSERT INTO character_create_template (
            race,
            aspect,
            instance,
            pos_x,
            pos_y,
            pos_z,
            orientation,
            faction,
            autoAttack,
            race_icon,
            class_icon,
            race_description,
            class_description,
            isactive,
            respawnInstance,
            respawnPosX,
            respawnPosY,
            respawnPosZ,
            startingLevel,
            sprint 
        )
    with
    race as (
      select 'Dwarf' as name
      union all select 'Elf' -- repeat this line for more races
    ),
    class as (
      select 'Barbarian' as name
      union all select 'Bard' -- repeat this line for more classes
    )
    select 
            437,
            428,
            29,
            - 170,
            74,
            154,
            0,
            1,
            - 1,
            "Assets/Resources/Assets/Icons/Race Icons/Dwarf.png",
            "Assets/Resources/Assets/Icons/Class Icons/Druid.png",
            r.name,
            c.name,
            1,
            29,
            - 170,
            74,
            154,
            1,
            - 1 
    from race r
    cross join class c

    请参阅 DB Fiddle 处的运行示例。

    注意:此示例包括两项比赛和两个级别,总共产生 4 种组合。添加其余部分,查询将生成全部 108 个。

    Antwort
    0
  • StornierenAntwort