Tengo que realizar una consulta a partir de dos tablas:
1º mdl_forum_posts: Tabla que almacena TODOS LOS MENSAJES de un foro: Esta tabla no contiene ningún campo que indica si los mensajes han sido valorados o no.
2º mdl_forum_valoracion: Tabla que almacena los mensajes que han sido valorados de un foro.
Pues bien, quiero una consulta que muestre los mensajes Valorados con valoracion distinta de 0, y aquellos que no han sido valorados.
Para ello, me valgo de un left outer join, y he probado todos estos resultados, teniendo en cuenta que en la tabla valoracion sólo hay mensajes valorados con un 0 (pero no todos, solo 10 o 20 de 700 o así).
SELECT DISTINCT(id) FROM mdl_forum_posts LEFT OUTER JOIN mdl_forum_valoracion ON mdl_forum_posts.id=a.idPost AND a.calificacion<>0
Esa consulta me devuelve TODOS los mensajes del foro, ya sean valorados con 0 o no. No es lo que me interesa.
SELECT DISTINCT(id) FROM mdl_forum_posts LEFT OUTER JOIN (SELECT * FROM mdl_forum_valoracion WHERE calificacion<>0)a ON mdl_forum_posts.id=a.idPost
Me devuelve TODOS los mensajes, es decir lo mismo que en la primera.
SELECT DISTINCT(id) FROM mdl_forum_posts LEFT OUTER JOIN mdl_forum_valoracion a ON mdl_forum_posts.id=a.idPost WHERE a.calificacion<>0
Me devuelve 0 columnas, tampoco es lo que me interesa
¿Alguien me podría echar una mano?
Muchísimas gracias!