2014-09-27 3 views
-1

У меня есть таблица, которая похожа на нижеследующую.Возврат следующих результатов

id | episode_number 

1  55 
2  56 
3  57-58 
4  59 
5  60 
6  61-62 
7  63 
8  64 
9  65-66 
10  67-68 

Моя цель - всякий раз, когда выбран определенный эпизод. Я хотел бы вернуть следующие 5 результатов. Допустим, если EPISODE_NUMBER 60 выбран, я хотел бы вернуться в следующие 5 результатов, который является

id | episode_number 
6  61-62 
7  63 
8  64 
9  65-66 
10  67-68 

я добился этого, делая следующее заявление ниже, все прекрасно работает.

$query = $PDO -> prepare("SELECT * FROM table 
          WHERE `table`.episode_number > :episode 
          ORDER BY (`table`.episode_number + 0) 
          LIMIT 5"); 

$query->bindValue(':episode', 60, PDO::PARAM_INT); 

Но как насчет того, если выбранные эпизоды не являются INT, а фактически STR? например 61-62, как я могу вернуть следующие 5 результатов?

+0

вы имеете в виду '61-62' само по себе считается 2 номер? поэтому нам просто нужно получить больше 3 (вместо 4)? –

ответ

0

Если я правильно понял проблему, когда у вас есть строка, вы получаете это значение в «следующем» списке, а не в «следующем» значении. Если это проблема, вот два пути ее решения:

SELECT * 
FROM table 
WHERE `table`.episode_number + 0 > :episode 
ORDER BY (`table`.episode_number + 0) 
LIMIT 5; 

или:

SELECT * 
FROM table 
WHERE `table`.episode_number >= :episode 
ORDER BY (`table`.episode_number + 0) 
LIMIT 5 OFFSET 1; 
+0

Нет, скажем, я положил 'table'.episode_number> 55, это будет работать нормально. Но если я ставлю 'table'.episode_number> 61-62. Это не вернет результаты желания. Поскольку 61-62 на самом деле не действительное число, а строка, в отличие от 55. –

+0

@KuwameBrown. , , Как это не работает? Измените свой вопрос с результатами, которые вы получаете, и фактическими результатами. База данных будет конвертировать между различными типами. –

+0

61-62 не является INT, поэтому база данных будет как-то считать его 6. И я получаю следующие 5 результатов после эпизода номер 6. DASH - это то, что делает разницу. –

Смежные вопросы