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
et
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))";
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part rows BETWEEN ? and ?
Voici ma requete complète
Ceci ne me retorune rien
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"));
alors que si je supprime ceci ($where)
il me retroune des résultats qui me semble OK au niveau de la pagination, mais évidemment, il n'y a aucun filtre.
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"));
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
Partager