par
SpintroniK » 10 mai 2008, 15:29
@ orgerix : si justement, on dirait bien que mysql_result déplace le pointeur...
@ Sékiltoyai : C'est-à-dire que j'ai une requête du type "SELECT id FROM nom_table ORDER BY id DESC LIMIT n, n+m;" et je voudrais récupérer l'id le plus grand et le plus petit, et ensuite, je doit faire un fetch... mais là, j'ai le choix entre deux codes :
($r contenant le mysql_query de ma requête, que je ne poste pas car elle est très longue, mais si vous voulez la voir, je peux la mettre)
1] ($end ne dépassera pas 50...)
$end = ($num_ms>$sujets_par_page)? $sujets_par_page:$num_ms;
$MaxId = 0;
$MinId = 0;
$cid = 0;
for($i=0; $i<$end; $i++)
{
$cid = mysql_result($r, $i, 'id');
if($MaxId < $cid) $MaxId = $cid;
if($i==0) $MinId=$MaxId;
if($MinId>$cid) $MinId = $cid;
}
mysql_data_seek($r, 0);
2]
$req_m = mysql_query("SELECT MAX(id), MIN(id) FROM table WHERE ...");
list($MaxId,$MinId) = mysql_fetch_row($req_m);
avec les mêmes conditions pour les WHERE des deux requêttes.
Les deux solutions fonctionnent mais en faisant des bench, j'ai l'impression que la première est plus rapide...
Qu'est-ce que vous en pensez ?
J'ai aussi pensé à une troisième solution qui consisterait à récupérer directement le MAX(id) et MIN(id) dans la première requête qui est du type : "SELECT * FROM table WHERE ... ODER BY id DESC LIMIT n,n+m" mais sans succès... même en utilisant des trucs avec GROUP BY ...[/php]
@ orgerix : si justement, on dirait bien que mysql_result déplace le pointeur...
@ Sékiltoyai : C'est-à-dire que j'ai une requête du type "SELECT id FROM nom_table ORDER BY id DESC LIMIT n, n+m;" et je voudrais récupérer l'id le plus grand et le plus petit, et ensuite, je doit faire un fetch... mais là, j'ai le choix entre deux codes :
($r contenant le mysql_query de ma requête, que je ne poste pas car elle est très longue, mais si vous voulez la voir, je peux la mettre)
1] ($end ne dépassera pas 50...)
[php]
$end = ($num_ms>$sujets_par_page)? $sujets_par_page:$num_ms;
$MaxId = 0;
$MinId = 0;
$cid = 0;
for($i=0; $i<$end; $i++)
{
$cid = mysql_result($r, $i, 'id');
if($MaxId < $cid) $MaxId = $cid;
if($i==0) $MinId=$MaxId;
if($MinId>$cid) $MinId = $cid;
}
mysql_data_seek($r, 0);
[/php]
2]
[php]
$req_m = mysql_query("SELECT MAX(id), MIN(id) FROM table WHERE ...");
list($MaxId,$MinId) = mysql_fetch_row($req_m);
[/php]
avec les mêmes conditions pour les WHERE des deux requêttes.
Les deux solutions fonctionnent mais en faisant des bench, j'ai l'impression que la première est plus rapide...
Qu'est-ce que vous en pensez ?
J'ai aussi pensé à une troisième solution qui consisterait à récupérer directement le MAX(id) et MIN(id) dans la première requête qui est du type : "SELECT * FROM table WHERE ... ODER BY id DESC LIMIT n,n+m" mais sans succès... même en utilisant des trucs avec GROUP BY ...[/php]