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

Devolver datos de una tabla relacionada con otra en una query

Estas en el tema de Devolver datos de una tabla relacionada con otra en una query en el foro de PostgreSQL en Foros del Web. Mis disculpas si esto no debe ir acá. Tengo la siguiente consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código sql: Ver original SELECT n . campo1 , n . ...
  #1 (permalink)  
Antiguo 13/10/2009, 14:16
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Devolver datos de una tabla relacionada con otra en una query

Mis disculpas si esto no debe ir acá.

Tengo la siguiente consulta

Código sql:
Ver original
  1. SELECT n.campo1,n.campo2,n.campo3, COUNT(c.campo1) AS COUNT
  2.             FROM tabla1 n
  3.             INNER JOIN tabla2 c
  4.             ON (n.campo1 = c.campo1)
  5.             GROUP BY campo1,campo2,campo3

En qué consiste el problema...

Esta consulta me devuelve los datos que tengan manera de relacionarse, es decir, si c.campo1 tiene un valor igual al de n.campo1 me devolverá datos, pero si la tabla2 no tiene nada que se iguale a n.campo1 no me devolverá nada.

Lo que pretendo es que a pesar de que hayan datos en una y en la otra no, igualmente me devuelva el dato que está por defecto, que es un 0.

Es un sistema de noticias que estoy haciendo. Por cada noticia debería devolver la cantidad de comentarios que esta tenga ( por FK de tabla2 a tabla1 ), pero si no tiene comentarios debería devolver un 0 D:. Pero solo me devuelve las noticias que tengan comentarios.

La razón es obvia, y es que estoy comparando n.campo1 con c.campo1, pero no sé como hacer que me devuelva todas las noticias independiente de si tienen comentarios o no D:

Espero haberme expresado bien, ya que escribí mucho XD...

Agradezco su ayuda de antemano ;D
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #2 (permalink)  
Antiguo 13/10/2009, 14:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Devolver datos de una tabla relacionada con otra en una query

prueba así:

Código sql:
Ver original
  1. SELECT n.campo1,n.campo2,n.campo3, COUNT(COALESCE(c.campo1,0)) AS conteo
  2.             FROM tabla1 n
  3.             LEFT JOIN tabla2 c
  4.             ON (n.campo1 = c.campo1)
  5.             GROUP BY campo1,campo2,campo3

No lo he probado
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/10/2009, 14:44
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Devolver datos de una tabla relacionada con otra en una query

Man, estuve buscando sobre coalesce(...,...) y esa es la solución. Me equivoqué en el 1er post al explicar mi problema. Dije que habían datos nulos, o 0 por defecto, lo cual no era así... busqué en la tabla y no habían datos nulos ni 0 por defecto

Pero como te dije, busqué, y a la consulta que me diste simplemente la dejé así coalesce(c.campo1), lo cual resultó a la perfección

Gracias master
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
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 18:48.