答案 0 :(得分:2)
由于我无法访问数据库,因此无法对其进行测试,但您可以尝试一下吗?
SELECT id_soldier, name
FROM soldier s
LEFT JOIN battle_log l ON s.id_soldier = l.soldier_id
LEFT JOIN battle b ON l.battle_id = b.id_battle
WHERE s.planet_id = b.id_planet_battle
如果它返回错误,请告诉我,我们会尝试修复它。
答案 1 :(得分:2)
您可以使用not exists
运算符排除参与其他星球战斗的士兵:
SELECT *
FROM soldier s
WHERE NOT EXISTS (SELECT *
FROM battle b
JOIN battle_log bl ON b.id_battle = bl.battle_id
WHERE bl.soldier_id = s.id_soldier AND
b.id_planet_battle != s.planet_id)
答案 2 :(得分:1)