Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/03/2009, 01:49
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: select doble (right join)

SELECT columna1
FROM basedatosweb.articulos art
INNER JOIN basedatosforo.phpbb_users foro ON foro.username=art.c_alias
where art.c_categoria In ('Anime', 'Manga') and art.c_publicado='si'
ORDER BY art.c_id DESC limit 15

Esto debería funcionar, pues todas las noticias tendrán un autor en su tabla, es decir un c_alias que estará en la tabla de usuarios del foro. Tal vez el problema está en que no tengas indexado ese c_alias. Indéxalo y también debería estar indexado username para poder hacer esto más rápido. En cuanto al índice sobre c_publicado, no interesa, pues la cardinalidad será 2 o 3 si o no, o si/no/null y tardará más que si no tienes índice porque primero irá a comprobar si puede utilizar los índices, verá que no, y tendrá que hacer lo que de todas maneras tendría que hacer. Lo mismo tal vez puede decirse sobre c_categoria.
Creo que de esta manera encontrarás lo que quieres y rápido, aunque, como te digo, los campos username y c_alias deben estar indexados y funcionando el índice. No sé qué gestor de bases de datos usas y no puedo decirte mucho más. No tiene sentido, creo, usar un left join, puesto que no quieres que aparezcan los usuarios que no tengan noticia... o las noticias que no tengan usuario (no habrá ningún caso).