У меня есть два раздела с играми, и у меня есть проблема. Когда игра в первом разделе, я не хочу показывать ее снова во втором разделе. Для показа игр в первой секции, которые я использую:Подзапрос mySQL с ошибкой ограничений
SELECT *,platform.platformName FROM games
JOIN platform ON(platform.PlatformID=games.GamePlatform)
WHERE GameDate <= NOW() AND GameSlide = 0
GROUP BY GameName
HAVING 1
ORDER BY `games`.`GameDate` DESC LIMIT 8
Для показа игр в второй секции:
SELECT *,platform.platformName
FROM games
JOIN platform ON(platform.PlatformID=games.GamePlatform)
WHERE platform.PlatformID = 2 AND GameSlide = 0
GROUP BY GameName
HAVING 1
order by rand(dayofyear(CURRENT_DATE))
LIMIT 8
Я попытался сделать подзапрос так:
SELECT *,platform.platformName
FROM games
JOIN platform ON(platform.PlatformID=games.GamePlatform)
WHERE games.GameID
NOT IN(
SELECT GameID
FROM games
WHERE GameDate <= NOW() AND GameSlide = 0
GROUP BY GameName
HAVING 1
ORDER BY `games`.`GameDate` DESC LIMIT 8
) AND platform.PlatformID = 2 AND GameSlide = 0
GROUP BY GameName
HAVING 1
order by rand(dayofyear(CURRENT_DATE)) LIMIT 8
Но MySQL call error: #1235 - This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Вы можете мне помочь? Прошу прощения за мой английский. Я сделал все что было в моих силах.
MySQL или MariaDB? См. [Ограничения MySQL :: C.4 в подзапросах] (https://dev.mysql.com/doc/refman/5.7/en/subquery-restrictions.html) или [MariaDB :: Ограничения подзапроса] (https://mariadb.com/kb/en/mariadb/subquery-limitations/) – wchiquito
Даже если это действительно сработало, 'ORDER BY GameDate DESC LIMIT 8'' не обязательно даст вам те же 8 записей в подзапросе, как и в запрос раздела 1 (если GameDate не уникален). Кроме того, я смущен тем, что для «ИДЕТ 1». Может быть полезно увидеть некоторые примеры записей. – Alan
У меня много игр с одинаковым именем и той же датой выпуска Единственная разница в платформе. Например: GTA V для PS4, Xbox и ПК, и я хочу показать только один из них, поэтому я использовал HAVING 1 в GamesName. Мне нужно использовать 'Limid 8' и' order by GameDate Desc' в subqury, потому что, когда я удаляю 'LIMIT 8', Subquery возвращает все игры, поэтому результат ничего не показывает и когда я удаляю' ORDER BY GameDate DEST', t возвращает длительные игры. Если вы хотите, я могу отправить вам несколько screeshots с databese и веб-сайтом, как это выглядит и как я это понимаю. :) – Frederik