Можно ли использовать запрос SQL, чтобы удовлетворить довольно сложный набор критериев? - PullRequest
0 голосов
/ 24 апреля 2020

Я делаю простую приключенческую игру на основе опций, используя PHP и базу данных mySQL в phpMyAdmin. Я настроил его так, чтобы события в игре были объектами в таблице под названием «События». Параметры, которые вы можете выбрать для каждого события, находятся в таблице, называемой Действия. Эти два имеют отношение многие ко многим, потому что некоторые действия могут быть предприняты для нескольких событий. Поэтому я создал таблицу соединений под названием 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;
    }

Однако, ситуация становится непростой, когда я пытаюсь включить необходимость определенных элементов для выполнения определенных действий. Я также пытаюсь включить необходимость делать определенные вещи для определенных действий, чтобы показать. Это привело меня к созданию таблиц для Предметов и Эффектов и соединительных таблиц для ItemActions и effectActions. Так что теперь моя функция запроса к базе данных должна быть намного более сложной, и у меня возникли проблемы с наведением порядка на запрос. Мне нужен запрос, который по существу получает из базы данных: все действия, которые связаны с данным событием, а также элементы и столбцы, которые связаны с этим действием. Я пытался что-то вроде этого, но он не возвращает никаких строк:

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

То, что я хочу вернуть из этой функции, это список всех параметров, доступных для данного события. Для каждого параметра мне нужны столбцы из таблицы «Действия», из таблицы «Элементы» (поэтому я знаю, какие элементы требуются для этого параметра) и из таблицы «Эффекты» (поэтому я знаю, какое влияние на мир оказывает параметр и каковы мировые эффекты. требуется, чтобы опция была доступна).

Дайте мне знать, если я не включаю необходимую информацию. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...