Bonjour à tous

Je rame pas mal sur un "grosse" requête MSSQL avec PHP.
J'ai beaucoup d'enregistrements et je dois faire de la pagination avec le retour de la requete.

Ma requête ne fonctionne pas au niveau de mon WHERE. JE dois jondre ceci
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
$where ="la.id_label > 0 AND (la.glaciers_id_glacier IN (2) AND la.locations_id_location IN (1))";
et
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
rows BETWEEN ? and ?

Voici ma requete complète
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
$tsql= 'SELECT rows, la.id_label, g_name, l_name, locations_id_location, t_name, r_name, b_name, boxes_id_box, isIn, isOut, isAnalized, comment FROM (SELECT ROW_NUMBER() OVER(ORDER BY id_label) AS rows, id_label, glaciers_id_glacier, locations_id_location, types_id_type, replicas_id_replica, boxes_id_box, isIn, isOut, isAnalized, comment FROM labels) AS la
          INNER JOIN glaciers AS gl ON gl.id_glacier = la.glaciers_id_glacier
          INNER JOIN locations AS lo ON lo.id_location = la.locations_id_location
          INNER JOIN types AS ty ON ty.id_type = la.types_id_type
          INNER JOIN replicas AS re ON re.id_replica = la.replicas_id_replica
          INNER JOIN boxes AS bo ON bo.id_box = la.boxes_id_box
            WHERE '.$where.'
            AND rows BETWEEN ? and ?
            ORDER BY la.id_label ASC;';
          $getResults= sqlsrv_query($conn, $tsql, array(), array("Scrollable"=>"buffered"));
Ceci ne me retorune rien
alors que si je supprime ceci ($where)
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
$tsql= 'SELECT rows, la.id_label, g_name, l_name, locations_id_location, t_name, r_name, b_name, boxes_id_box, isIn, isOut, isAnalized, comment FROM (SELECT ROW_NUMBER() OVER(ORDER BY id_label) AS rows, id_label, glaciers_id_glacier, locations_id_location, types_id_type, replicas_id_replica, boxes_id_box, isIn, isOut, isAnalized, comment FROM labels) AS la
          INNER JOIN glaciers AS gl ON gl.id_glacier = la.glaciers_id_glacier
          INNER JOIN locations AS lo ON lo.id_location = la.locations_id_location
          INNER JOIN types AS ty ON ty.id_type = la.types_id_type
          INNER JOIN replicas AS re ON re.id_replica = la.replicas_id_replica
          INNER JOIN boxes AS bo ON bo.id_box = la.boxes_id_box
            WHERE rows BETWEEN ? and ?
            ORDER BY la.id_label ASC;';
          $getResults= sqlsrv_query($conn, $tsql, array(), array("Scrollable"=>"buffered"));
il me retroune des résultats qui me semble OK au niveau de la pagination, mais évidemment, il n'y a aucun filtre.

Je pense donc que je suis dans le flou au niveau du WHERE, de manière a ce que ma requete me retourne un résultat selon le fitre (0 à 8 critères, tous des array) en tenant compte que le résulta doit être panigé. C'est a dire que je veux 20 lignes par pages et évidement autant de page pour parcourir tout le rsultat de ma requête.

Comment puis-je donc bien corrigé ma reqteuet MSSQL avec PHP?

Mille mercis pour vos lumières et belle journée