Hola,
Voy a plantear el problema de otra manera que alomejor es más sencillo y alguien con más conocimiento que yo podrá ayudarme. La explicación es un poco larga pero si tenéis paciencia de leerla queda más clara y posiblemente lo entenderéis mejor y así posiblemente también me podáis ayudar.
Gracias de antemano
Comienzo:
 
Tengo estas 3 tablas:
[table]
[tr]
[td]
USUARIOS[/td]
[/tr]
[tr]
[td]
id_usuario(primary Key)[/td]
[/tr]
[tr]
[td]nombre[/td]
[/tr]
[tr]
[td]correo[/td]
[/tr]
[tr]
[td]user[/td]
[/tr]
[tr]
[td]fecha[/td]
[/tr]
[tr]
[td]estado[/td]
[/tr]
[tr]
[td]
id_perfil[/td]
[/tr]
[/table]
 
[table]
[tr]
[td]PERFILES[/td]
[/tr]
[tr]
[td]
id_perfil(primary Key)[/td]
[/tr]
[tr]
[td]perfil[/td]
[/tr]
[tr]
[td]
id_tipoperfil[/td]
[/tr]
[/table]
 
[table]
[tr]
[td]TIPO_PERFIL[/td]
[/tr]
[tr]
[td]
id_tipoperfil(primary Key)[/td]
[/tr]
[tr]
[td]Descripcion[/td]
[/tr]
[/table]
 
Lo que necesito es mostrar todos los usuarios con sus campos, y ademas debería de mostrar su perfil y la Descripción del tipo perfil. Para que quede más claro muestro el contenido de las tablas PERFILES y TIPO_PERFIL que es un contenido no dinámico y siempre será el mismo:
Contenido PERFILES:
id_perfil, perfil, id_tipoperfil)
(1, 'Administrador', 1),
(2, 'Administrador', 11),
(3, 'Administrador', 111),
(4, 'Administrador', 112),
(5, 'Administrador', 1112),
(6, 'Editor', 1),
(7, 'Editor', 11),
(8, 'Editor', 111),
(9, 'Editor', 112),
(10, 'Editor', 1112),
(11, 'Registrado', 1),
(12, 'Registrado', 11),
(13, 'Encuestador', 1),
(14, 'Encuestador', 11),
(15, 'Encuestador', 111),
(16, 'Encuestador', 112),
(17, 'Encuestador', 1112);
 
Contenido TIPO_PERFIL:
(id_tipoperfil, Descripcion)
(1, 'Leer'),
(11, 'Leer, modificar'),
(111, 'Leer, modificar, insertar'),
(112, 'Leer, modificar, eliminar'),
(1112, 'Leer, modificar, insertar y eliminar');
 
Como habréis podido observar; USUARIOS se relaciona con PERFILES a través del campo 
id_perfil y PERFILES se relaciona con TIPO_PERFIL a través del capo 
id_tipoperfil.
Las relaciones serían: 
USUARIOS (
id_perfil) --> 
PERFILES (
id_perfil, id_tipoperfil) --> 
TIPO_PERFIL(
id_tipoperfil)
 
Bien, explicado esto muestro como debería ser el resultado (sólo pongo un registro para resumir, es decir como si hubiera sólo 1 usuario):
Nombre         Correo             User         Fecha         Estado         Perfil            Descripción
Pepito        pepito@pepe.com   pepe    25/12/2011     activo    administrador   Leer,modificar,eliminar
En este caso si seguimos la relación anterior:
Las relaciones serían: 
USUARIOS (
id_perfil=4) --> 
PERFILES (
id_perfil=4, id_tipoperfil=112) --> 
TIPO_PERFIL(
id_tipoperfil=112)
 
Hasta aquí he explicado lo que deseo mostrar y como tengo los datos estructurados en las tablas. Ahora os voy a indicar lo que hago bien y lo que no hago bien y por tanto necesito ayuda:
1.: Mostrar los datos de la tabla USUARIOS
En este punto no tengo ningún problema.
Tengo una clase Usuarios en la cual hay un método 
get_usuarios()
 que hace la llamada a la base de datos.
Copio el método:
public function get_usuarios()
   {
      $sql="SELECT * FROM usuarios ORDER BY fecha DESC";
      
      $res=mysql_query($sql,Conectar::con());
      while ($reg=mysql_fetch_assoc($res))
      {
         $this->usuario[]=$reg;
      }
         return $this->usuario;
   
   }
Copio trozo de código desde el cual llamo a esté método y aparte muestro los datos de este array:
<?php
$n=$not->get_usuarios(); //Aqui llamo al método
 
 
 
for ($i=0;$i<sizeof($n);$i  ) //Realizo un for para recorrer el array
 
 
{
?>
<tr>
<td valign="top" align="left">
<?php echo $n[$i]["nombre"];?> //muestro campo nombre
</td>
<td valign="top" align="left">
<?php echo $n[$i]["correo"];?>//muestro campo correo
</td>
<td valign="top" align="left">
<?php echo $n[$i]["user"];?>//muestro campo user
</td>
<td valign="top" align="left">
<?php echo $not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]);?> 
</td>
<td valign="top" align="left">
<?php echo $n[$i]["fecha"];?>//muestro campo fecha
</td>
<td valign="top" align="left">
<?php echo $n[$i]["estado"];?>//muestro campo estado
</td>
<td valign="top" align="center">
<a href="edit_usuarios.php?id_usuario=<? echo $n[$i]["id_usuario"];?>" title="Editar <?php echo $n[$i]["user"];?>"><img src="ima/editar.png" border="0" /></a>
</td>
<td valign="top" align="center">
<a href="javascript:eliminar_usuario('eliminar_usuario.php?id_usuario=<? echo $n[$i]["id_usuario"];?>');" title="Eliminar <?php echo $p[$i]["user"];?>"><img src="ima/eliminar.png" border="0" /></ a>
</td>
 
</tr>
<?php
}
?>
</table>
Hasta aquí todo correcto, ahora vamos al paso 2:
2.: Mostrar los datos Descripcion de la tabla TIPO_PERFIL y campoperfil de la tabla PERFILES
He aquí mi problema, no tengo ni idea de hacer esto.
Yo lo he hecho de la siguiente manera:
Tengo un método al que le paso por referencia un 
id_usuario  y que me devuelve la descripción que le corresponda según la tabla TIPO_PERFIL.
El método es el siguiente:
   public function get_descripcion_perfil_by_id_usuario($id_usuario)
 
   {
   $sql="select tp.Descripcion from usuarios AS u, tipo_perfil AS tp, perfiles AS p where id_usuario='".strip_tags($id_usuario)."' AND u.id_perfil = p.id_perfil AND p.id_tipoperfil = tp.id_tipoperfil";
      $res=mysql_query($sql,Conectar::con());
      while ($reg=mysql_fetch_array($res))
      
      {
         $this->usuariodescripcion[]=$reg;
      }
         return $this->usuariodescripcion;
   }
}
El trozo de código, dentro de la tabla que he apuntado antes, dónde llamo a ese método es:
<td valign="top" align="left">
<?php echo $not->get_descripcion_perfil_by_id_usuario($n[$i]["id_usuario"]);?> 
</td>
Bien, pues esto no funciona, no sé porqué. El resultado que me dá esto es "Array". La sql funciona, ya que la he puesto en PhPMyadmin (lógicamente sustituyendo '".strip_tags($id_usuario)."' por un '1', le pongo el id usuario 1).
Espero que la explicación haya sido clara y alguien me pueda decir que puedo hacer.
Gracias a tod@s.