WITH uma_name AS ( SELECT "index" AS id, "text" AS name FROM text_data WHERE category = 4 ), uma_variant AS ( SELECT "index" AS id, "text" AS variant FROM text_data WHERE category = 5 ), chara_name AS ( SELECT "index" AS id, "text" AS name FROM text_data WHERE category = 6 ), skills AS ( SELECT uma.id, s.skill_id, s.need_rank, ROW_NUMBER() OVER (PARTITION BY s.available_skill_set_id, s.need_rank) AS idx FROM card_data uma LEFT JOIN available_skill_set s ON uma.available_skill_set_id = s.available_skill_set_id ) SELECT uma.card_id, card_data.chara_id, n.name, v.variant, c.name AS chara_name, uma.proper_distance_short, uma.proper_distance_mile, uma.proper_distance_middle, uma.proper_distance_long, uma.proper_running_style_nige, uma.proper_running_style_senko, uma.proper_running_style_sashi, uma.proper_running_style_oikomi, uma.proper_ground_turf, uma.proper_ground_dirt, su.skill_id1 AS unique_skill, s1.skill_id AS skill1, s2.skill_id AS skill2, s3.skill_id AS skill3, sp2.skill_id AS skill_pl2, sp3.skill_id AS skill_pl3, sp4.skill_id AS skill_pl4, sp5.skill_id AS skill_pl5 FROM card_data JOIN card_rarity_data uma ON card_data.id = uma.card_id JOIN chara_name c ON card_data.chara_id = c.id JOIN skill_set su ON uma.skill_set = su.id JOIN skills s1 ON uma.card_id = s1.id AND s1.need_rank = 0 AND s1.idx = 1 JOIN skills s2 ON uma.card_id = s2.id AND s2.need_rank = 0 AND s2.idx = 2 JOIN skills s3 ON uma.card_id = s3.id AND s3.need_rank = 0 AND s3.idx = 3 JOIN skills sp2 ON uma.card_id = sp2.id AND sp2.need_rank = 2 JOIN skills sp3 ON uma.card_id = sp3.id AND sp3.need_rank = 3 JOIN skills sp4 ON uma.card_id = sp4.id AND sp4.need_rank = 4 JOIN skills sp5 ON uma.card_id = sp5.id AND sp5.need_rank = 5 LEFT JOIN uma_name n ON uma.card_id = n.id LEFT JOIN uma_variant v ON uma.card_id = v.id WHERE uma.rarity = 5