Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk memasukkan dua tatasusunan berbeza ke dalam jadual dengan pernyataan SQL INSERT INTO?

Sudah sekian lama saya tidak mengacau SQL sehingga saya terpaksa mula menggunakannya semula apabila saya membina permainan video saya sendiri. Saya menggunakan MySQL dan saya menghadapi beberapa isu yang rumit di sini.

Ini adalah dua tatasusunan saya;

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"';

Seperti yang kita lihat, saya mempunyai 9 permainan dan 12 kelas. Saya mahu menggunakan tatasusunan ini untuk mengodkan pernyataan INSERT INTO supaya saya tidak perlu memasukkan 108 baris secara manual.

Ini adalah kenyataan INSERT INTO saya yang sedang berjalan;

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 
    )

Saya perlu mengulangi kenyataan INSERT INTO ini sehingga saya menyelesaikan kesemua 108 kombinasi perlumbaan dan kelas. Oleh itu, orang kerdil akan muncul dalam pangkalan data sebagai setiap kategori. Kemudian Elf akan dimasukkan ke dalam setiap kelas dalam pangkalan data. Kemudian separuh, kemudian manusia, dan seterusnya.

Tatasusunan kelas hanya masuk ke class_description dan class_icon dan anda boleh melihat saya sedang mengalih keluar pautan ke imej. Perlumbaan juga akan mengikuti imej race_icon.

Adakah sesiapa tahu cara untuk mengulangi ArrayofRaces 12 kali setiap perlumbaan supaya saya boleh mengimport kategori dan perlumbaan dengan mudah?

Terima kasih terlebih dahulu!

P粉959676410P粉959676410244 hari yang lalu336

membalas semua(1)saya akan balas

  • P粉505917590

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

    Anda boleh menjana semua kombinasi menggunakan cantuman silang. Contohnya:

    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

    Lihat contoh larian di DB Fiddle.

    NOTA: Contoh ini termasuk dua perlumbaan dan dua peringkat, menghasilkan sejumlah 4 kombinasi. Tambahkan selebihnya dan pertanyaan akan menjana kesemua 108.

    balas
    0
  • Batalbalas