У меня есть следующий запрос sql, который отлично работает для разбиения на страницы

$tsql = "SELECT * FROM 
            (SELECT ROW_NUMBER() OVER(ORDER BY ClientID) 
            AS rowID, Status, FirstName, LastName FROM Client)
        AS TEMP
        WHERE (rowID BETWEEN ? AND ? + 1)";

Когда я добавляю еще одно условие (Status! = -1) в предложение where, оно не показывает мне одинаковое количество строк на каждой странице.

$tsql = "SELECT * FROM 
            (SELECT ROW_NUMBER() OVER(ORDER BY ClientID) 
            AS rowID, Status, FirstName, LastName FROM Client)
        AS TEMP
        WHERE (rowID BETWEEN ? AND ? + 1) AND (Status != -1)";

Кто-нибудь знает, как написать этот запрос, чтобы получить одинаковое количество строк на каждой странице. Спасибо

1
User27 11 Янв 2017 в 08:29
Используйте дополнительные условия в подзапросе FROM Client WHERE Status != -1
 – 
bansi
11 Янв 2017 в 08:35
Вам нужно добавить условие (Status! = -1) во внутренний запрос выбора.
 – 
Abdul Rasheed
11 Янв 2017 в 08:35

1 ответ

Лучший ответ

Вам нужно добавить условие (Status! = -1) во внутренний запрос выбора. Попробуйте этот скрипт ниже,

$tsql = "SELECT * FROM 
            (SELECT ROW_NUMBER() OVER(ORDER BY ClientID) 
                AS rowID, Status, FirstName, LastName FROM Client
            WHERE (Status != -1) )
        AS TEMP
        WHERE (rowID BETWEEN ? AND ? + 1) 
        ORDER BY rowID";
0
Abdul Rasheed 11 Янв 2017 в 09:12
Работал. Большое спасибо, это было слишком просто.
 – 
User27
11 Янв 2017 в 08:41
Теперь, где я могу добавить предложение ORDER BY, пожалуйста
 – 
User27
11 Янв 2017 в 08:56
Вы можете использовать ORDER BY rowID в последней части вашего запроса. Ответьте доработанный плз чк.
 – 
Abdul Rasheed
11 Янв 2017 в 09:13