41 lines
1.0 KiB
SQL
41 lines
1.0 KiB
SQL
WITH uma_names AS (
|
|
SELECT
|
|
"index" AS "id",
|
|
"text" AS "name"
|
|
FROM text_data
|
|
WHERE category = 6 AND "index" BETWEEN 1000 AND 1999
|
|
-- Exclude characters who have no succession relations defined.
|
|
AND "index" IN (SELECT chara_id FROM succession_relation_member)
|
|
), trios AS (
|
|
SELECT
|
|
a.id AS id_a,
|
|
a.name AS name_a,
|
|
b.id AS id_b,
|
|
b.name AS name_b,
|
|
c.id AS id_c,
|
|
c.name AS name_c,
|
|
ra.relation_type
|
|
FROM uma_names a
|
|
JOIN uma_names b ON a.id != b.id
|
|
JOIN uma_names c ON a.id != c.id AND b.id != c.id
|
|
JOIN succession_relation_member ra ON a.id = ra.chara_id
|
|
JOIN succession_relation_member rb ON b.id = rb.chara_id
|
|
JOIN succession_relation_member rc ON c.id = rc.chara_id
|
|
WHERE
|
|
ra.relation_type = rb.relation_type
|
|
AND ra.relation_type = rc.relation_type
|
|
), affinity AS (
|
|
SELECT
|
|
id_a,
|
|
name_a,
|
|
id_b,
|
|
name_b,
|
|
id_c,
|
|
name_c,
|
|
SUM(relation_point) AS base_affinity
|
|
FROM trios
|
|
JOIN succession_relation sr ON trios.relation_type = sr.relation_type
|
|
GROUP BY id_a, id_b, id_c
|
|
)
|
|
SELECT * FROM affinity
|
|
ORDER BY id_a, id_b, id_c |