SET @current_episode = 1; SET @current_season = 2; SET @current_serial = 2; SELECT * FROM `episode` _episode LEFT JOIN season _season ON _episode.season_id = _season.id LEFT JOIN serial _serial ON _season.serial_id = _serial.id WHERE (_episode.episode < @current_episode AND _season.season = @current_season) OR (_episode.episode > @current_episode AND _season.season = (@current_season - 1)) ORDER BY _season.season DESC, _episode.episode ASC LIMIT 0,1 Episode table:
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | season_id | int(11) | YES | MUL | NULL | | | poster_id | int(11) | YES | MUL | NULL | | | episode | int(11) | NO | | NULL | | +-------------+--------------+------+-----+---------+----------------+ Season table:
+------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | serial_id | int(11) | YES | MUL | NULL | | | season | int(11) | NO | | NULL | | Table Serial :
+------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment |
sqldialect?ms-sql,my-sql,oracle, etc.? - Vadim Ovchinnikov