the first solution uses LIMIT in a subquery
this doesn't work in all versions of mysql, though
Code:
SELECT m.ID AS matchID
, m.datePlayed
, m.win
, o.ID AS opponentID
, o.name AS opponent
, s.ID AS seasonID
, s.name AS season
, e.ID AS eventID
, e.name AS event
, g.score
, g.opponentScore
, g.win AS gameWin
FROM ( SELECT *
FROM matches
WHERE datePlayed BETWEEN '2009-01-01'
AND '2009-02-26'
ORDER
BY datePlayed DESC LIMIT 10
) AS m
INNER
JOIN opponents AS o
ON o.ID = m.opponentID
INNER
JOIN events AS s
ON s.ID = m.eventID
INNER
JOIN events AS e
ON e.ID = s.parentID
INNER
JOIN games AS g
ON g.matchID = m.ID
WHERE e.userID = 123
AND e.ID = 201
AND e.ID NOT IN (150,151)
AND s.ID IN (3,4)
AND s.ID NOT IN (5,6)
AND o.ID IN (124,125)
AND o.ID NOT IN (126,127)
ORDER
BY m.datePlayed DESC
Bookmarks