¿Ves como no se perdía ningún valor?
Y además, la consulta está bien escrita, como dices, si hay datos entonces debería devolver algo.
¿Pero por qué no lo hace?
Te hace falta depurar dentro de tu método entonces ya que por fuera todo anda bien.
¿Has intentado usar mysql_num_rows() después de ejecutar la consulta para comprobar que efectivamente tengas resultados?
Porque si lo que devuelves tiene algo no lo vemos.