У меня есть четыре таблицы:Как создать такой запрос?
- турниры (номер, имя, слоты, цена, GameID, platformId)
- игр (номер, имя)
- платформы (номер, имя)
- к участию (идентификатор, tournamentId, playerId)
Я хочу, чтобы получить название игры турнира, название платформы, игровые автоматы, цена, reservedSlots (кол-участий), информация ли какой-то игрок (его идентификатор предоставляется PHP) участие в этом турнире (BOOL/истине) и условие: - GameID должен быть в указанном массиве, предоставляемый РНР - platformId должен быть в указанном массиве, предоставляемого РНР
я создал что-то вроде этого, но он не работает правильно:
PHP:
$platformsList = "'". implode("', '", $platforms) ."'"; //
$gamesList = "'". implode("', '", $games). "'";
MySQL:
SELECT
t. NAME AS tournamentName,
t.id,
t.slots,
p. NAME,
g. NAME AS gameName,
t.price
FROM
tournaments AS t,
platforms AS p,
games AS g,
participations AS part
WHERE
t.PlatformId = p.Id
AND t.GameId = g.Id
AND t.Slots - (
SELECT
count(*)
FROM
participations
WHERE
TournamentId = t.id
) > 0
AND part.TournamentId = t.Id
AND t.PlatformId IN ($platformsList)
AND t.GameId IN ($gamesList)
Что не работает? журнал ошибок? работает ли запрос в mysql workbench, т. е. является ли запрос действительным – ChelseaStats
И что именно неправильно? У вас нет выхода или неправильного вывода? – Gudgip
Есть выход, но это не то, что я хочу. Он возвращает столько записей, сколько существует при участии с данными аргументами – Lukas