是否可以使用SQL查询来满足一组相当复杂的条件?

我正在使用PHP和phpMyAdmin中的mySQL数据库制作一个基于选项的简单冒险游戏。我已经进行了设置,以便游戏中的事件是名为“事件”的表中的对象。您可以在每个事件中选择的选项位于一个名为“操作”的表中。两者具有多对多关系,因为可能会在多个事件中采取某些措施。因此,我创建了一个名为EventActions的联结表。我可以使用该联接表成功查询哪些操作可用于具有内部联接的事件:

public static function getActions($eventID){
        $db = Database::getDB();
        $query = 'SELECT * FROM eventactions ea
                INNER JOIN actions a ON a.actionID = ea.actionID
                WHERE ea.eventID = :eventID';
        $statement = $db->prepare($query);
        $statement->bindValue(":eventID", $eventID);
        $statement->execute();
        $actions = $statement->fetchAll(PDO::FETCH_ASSOC);
        $statement->closeCursor();
        return $actions;
    }

但是,当我尝试合并需要某些项目来执行某些操作时,情况变得很棘手。我还试图将需要做的某些事情包含进去,以显示某些动作。这导致我为Items和Effects创建表,为itemActions和effectActions连接表。因此,现在我的数据库查询功能需要更加复杂,并且我无法将自己的注意力集中在对查询进行论坛上。我需要一个从数据库中获取的查询:与给定事件相关的所有操作,以及与该操作相关的项和worldeffects列。我尝试过类似的操作,但是它不返回任何行:

select * from eventactions ea
inner join actions a on a.actionID = ea.actionID
inner join actionitems ai on ai.actionID = a.actionID
inner join actioneffects ae on ae.actionID = a.actionID
inner join worldeffects e on e.effectID = ae.worldEffect
where ea.eventID = :event

让我知道我是否未包含必要的信息。谢谢!

评论