Obtener numerador y denominador desde una tabla en MySQL con PHP (numero / total)

by Zilus on 8/07/2010

En realidad no sé ni como poner titulo a este tema, pero les explico un poco lo que tenia que hacer para que encuentren este ejemplo útil en lo que necesiten.
Existe una tabla en la que almaceno registros que se enlazan a otra tabla por medio de un campo, ejemplo:

T1
a_id, a_referencia_t2_id, a_contenido

T2
b_id, b_algomas

Con esto, debía listar todas las filas de T1 y en obtener la el numerador del registro, es decir, 2 / 3 (el segundo registro de los tres disponibles con la misma referencia de la T2).

Obtener el denominador es sencillo:

$total_num = ceil(mysql_num_rows(mysql_query(“SELECT a_id FROM t1 WHERE a_referencia_t2_id=”.$row_t1['b_id'].””)));

Ahora, lo complicado, es generar ese “índice” para obtener el numerador, esto lo hice dentro de un while($row_t1=mysql_fetch_assoc($query_t1)), entonces la ejecución del código se hace por cada fila obtenida:

mysql_query(“set @a_id = ””);
mysql_query(“set @num  = 1;”);
$sql_num = ‘
SELECT
a_id as id_num,
a_referencia_t2_id,
@num := if(@a_id = a_referencia_t2_id, @num + 1, 1) as row_number,
@a_id:= a_referencia_t2_id as dummy
FROM `t1`
WHERE a_referencia_t2_id=’.$row_t1['a_referencia_t2_id'];
$query_num=mysql_query($sql_num) or die(mysql_error());
while($row_num=mysql_fetch_assoc($query_num)) {
if($row_num['id_num']==$row_t1['a_id']) {
$num=$row_num['row_number'];
}
}

Con esto, obtenemos el resultado deseado (Ej.: 4 / 8):

echo $num.” / “.$total_num

Espero que les sea útil!
Part ot this code came from: http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/