Comunidad de diseño web y desarrollo en internet online

Consulta con LEFT OUTER JOIN

Citar            
MensajeEscrito el 22 Dic 2011 06:04 pm
Saludos:

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!

Por jomafer

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2011 06:39 pm
¿Y has probado usando el otro operador de comparación para diferente?

Código PHP :

!=


También cambia el campo del SELECT. Envez de (id) usa:

mdl_forum_posts.id

A ver que tal te va

Por ElSiniestro

Claber

285 de clabLevel


1 articulo

Genero:Masculino  

Alguien que Ayuda

chrome
Citar            
MensajeEscrito el 22 Dic 2011 07:20 pm
Saludos!

Ante todo gracias por tu respuesta.

Ya había probado el operador != y nada. Y lo de llamarlo con la tabla antes, también. Aún así, el campo id no se repite en las dos tablas: En la primera es id y en la segunda: idPost.

A ver si damos con la tecla!

Por jomafer

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Dic 2011 07:26 pm
Inténtalo con XOR (se cumple la condición si está en un lado pero no en los 2

(Disculpa la calidad de mis respuestas pero ando en otras cosas a la vez :P )

Por ElSiniestro

Claber

285 de clabLevel


1 articulo

Genero:Masculino  

Alguien que Ayuda

chrome
Citar            
MensajeEscrito el 22 Dic 2011 08:48 pm
con que motor de DB trabajas?

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.