在哪里查询?

时间:2015-10-01 08:48:27

标签: mysql where-in

使用下一个数据库: G

我需要选择在他们自己的星球上战斗的所有士兵,我不知道如何才能做到。

这是我尝试过的。

node.xpath('.//td[@colspan=6 @class="mbw"]')

3 个答案:

答案 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)

enter image description here

我认为您可以使用简单查询并加入此步骤。

如果我理解正确的士兵加入行星(士兵有自己的星球) 然后加入行星之战(因为那个士兵有它的行星已经有战斗)