Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta MySQL con LEFT OUTER JOIN

Estas en el tema de Consulta MySQL con LEFT OUTER JOIN en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/12/2011, 12:05
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Consulta MySQL con LEFT OUTER JOIN

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!
  #2 (permalink)  
Antiguo 23/12/2011, 15:21
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Consulta MySQL con LEFT OUTER JOIN

Saludos

Podrias probar de la siguiente manera:
Código MySQL:
Ver original
  1. #Todos los mensajes valorados diferene a 0
  2. SELECT DISTINCT(idPost ) as id FROM mdl_forum_valoracion  WHERE calificacion<>0
  3. #aquellos que no han sido valorados
  4. SELECT DISTINCT(id)  as id FROM mdl_forum_posts WHERE  id NOT IN(SELECT idPost  FROM mdl_forum_valoracion)
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Etiquetas: join, left, outer, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:10.