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

consulta sin valores repetidos

Estas en el tema de consulta sin valores repetidos en el foro de PostgreSQL en Foros del Web. Hola a todos, Espero que vaya todo bien. ¿Me podéis ayudar con una consulta que no consigo que me salga bien? He intentado de todo ...
  #1 (permalink)  
Antiguo 03/11/2016, 12:48
 
Fecha de Ingreso: agosto-2015
Mensajes: 40
Antigüedad: 8 años, 7 meses
Puntos: 0
consulta sin valores repetidos

Hola a todos,

Espero que vaya todo bien.

¿Me podéis ayudar con una consulta que no consigo que me salga bien? He intentado de todo pero no lo consigo, si me podéis ayudar por favor, os lo agradecería mucho.

Este es el código sql que tengo:

Código:
SELECT referencia, nombre, to_char(ccv.fecha_desde 'dd/MM/yyyy') as fecha_desde_ccv, ccv.valor as total_valor_ccv, to_char(ccc.fecha_desde, 'dd/MM/yyyy') as fecha_desde_ccc, ccc.valor as total_valor_ccv
    FROM tabla1
    inner join tabla2 on idtabla2 = idtabla1  
    inner join tabla3 on idtabla3 = idtabla1
    INNER JOIN tabla4 ON idtabla4 = idtabla3
    left join tabla5 as ccc on ccc.idccc = idtabla3 --importante mirar bien esta linea
    left join tabla5 as ccv on ccv.idccv = idtabla3 --importante mirar bien esta linea
    inner join tabla6 on idtabla6 = idtabla3 
    LEFT JOIN tabla7 ON idtabla7 = idtabla6 
    WHERE fecha_desde_realizacion >= '2016-07-12 0000' and idtabla2 in (129, 214, 173) AND estado IN ('OK')
    ORDER BY ccc.fecha_desde ASC, referencia
Los resultados que me devuelven son los siguientes:

Referencia Nombre fecha_desde_ccv total_valor_ccv
11 Prueba1 11/11/2015 375
11 Prueba1 10/09/2015 375
11 Prueba1 02/10/2015 375
12 Hola 01/11/2016 480
12 Hola 02/12/2016 480
21 Caracola 05/15/2016 55
33 Bye 05/09/2016 115
33 Bye 09/06/2016 115

fecha_desde_ccc total_valor_ccc
31/01/2016 96
31/01/2016 96
31/01/2016 96
21/08/2016 77
21/08/2016 77
22/07/2016 89
12/08/2016 52
12/08/2016 52

Yo lo que quiero es que me muestre la referencia una sola vez con el registro que tenga la mínima fecha_desde_ccv. Ejemplo:

Referencia Nombre fecha_desde_ccv total_valor_ccv
11 Prueba1 10/09/2015 375
12 Hola 01/11/2016 480
21 Caracola 05/15/2016 55
33 Bye 09/06/2016 115

fecha_desde_ccc total_valor_ccc
31/01/2016 96
21/08/2016 77
22/07/2016 89
12/08/2016 52

Es un poco complicada esta consulta para mi.

Muchas gracias por vuestra ayuda.

Un saludo a todos.
  #2 (permalink)  
Antiguo 03/11/2016, 13:34
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: consulta sin valores repetidos

Prueba con DISTINCT, asi:

Código SQL:
Ver original
  1. SELECT DISTINCT referencia, nombre, to_char(ccv.fecha_desde 'dd/MM/yyyy') AS fecha_desde_ccv, ccv.valor AS total_valor_ccv, to_char(ccc.fecha_desde, 'dd/MM/yyyy') AS fecha_desde_ccc, ccc.valor AS total_valor_ccv
  2.     FROM tabla1
  3.     INNER JOIN tabla2 ON idtabla2 = idtabla1  
  4.     INNER JOIN tabla3 ON idtabla3 = idtabla1
  5.     INNER JOIN tabla4 ON idtabla4 = idtabla3
  6.     LEFT JOIN tabla5 AS ccc ON ccc.idccc = idtabla3 --importante mirar bien esta linea
  7.     LEFT JOIN tabla5 AS ccv ON ccv.idccv = idtabla3 --importante mirar bien esta linea
  8.     INNER JOIN tabla6 ON idtabla6 = idtabla3
  9.     LEFT JOIN tabla7 ON idtabla7 = idtabla6
  10.     WHERE fecha_desde_realizacion >= '2016-07-12 0000' AND idtabla2 IN (129, 214, 173) AND estado IN ('OK')
  11.     ORDER BY ccc.fecha_desde ASC, referencia
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 03/11/2016, 15:35
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: consulta sin valores repetidos

Hola Alberto

Necesitas agrupar por la minima fecha.
Lo haces con GROUP BY y la función MIN.

Creería que debe quedar mas o menos así:

Código SQL:
Ver original
  1. SELECT referencia, nombre, to_char(MIN(ccv.fecha_desde), 'dd/MM/yyyy') AS fecha_desde_ccv, ccv.valor AS total_valor_ccv, to_char(ccc.fecha_desde, 'dd/MM/yyyy') AS fecha_desde_ccc, ccc.valor AS total_valor_ccv
  2.     FROM tabla1
  3.     INNER JOIN tabla2 ON idtabla2 = idtabla1  
  4.     INNER JOIN tabla3 ON idtabla3 = idtabla1
  5.     INNER JOIN tabla4 ON idtabla4 = idtabla3
  6.     LEFT JOIN tabla5 AS ccc ON ccc.idccc = idtabla3 --importante mirar bien esta linea
  7.     LEFT JOIN tabla5 AS ccv ON ccv.idccv = idtabla3 --importante mirar bien esta linea
  8.     INNER JOIN tabla6 ON idtabla6 = idtabla3
  9.     LEFT JOIN tabla7 ON idtabla7 = idtabla6
  10.     WHERE fecha_desde_realizacion >= '2016-07-12 0000' AND idtabla2 IN (129, 214, 173) AND estado IN ('OK')
  11.     GROUP BY referencia, nombre,ccv.valor,ccc.fecha_desde,ccc.valor
  12.     ORDER BY ccc.fecha_desde ASC, referencia
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 03/11/2016, 16:37
 
Fecha de Ingreso: agosto-2015
Mensajes: 40
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: consulta sin valores repetidos

Hola Alberto y huesos52,

muchas gracias por vuestras respuestas rápidas y por vuestra ayuda, pero me sigue sin funcionar, he probado vuestras dos soluciones y ninguna funciona.

Espero que me podáis ayudar y que me digáis donde está el error.

Un saludo a los dos.

¡A cuidarse!
  #5 (permalink)  
Antiguo 16/12/2016, 07:47
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: consulta sin valores repetidos

Creo que tu problema se encuentra en las dos lineas que marcas. Estas haciendo un JOIN con la misma tabla dos veces.

Proba reemplazar:

Código SQL:
Ver original
  1. LEFT JOIN tabla5 AS ccc ON ccc.idccc = idtabla3
  2. LEFT JOIN tabla5 AS ccv ON ccv.idccv = idtabla3

por:

Código SQL:
Ver original
  1. LEFT JOIN tabla5 AS ccc ON ccc.idccc = idtabla3 AND ccc.idccv = idtabla3

El AND se puede cambiar por el OR si solamente una de las condiciones se tiene que cumplir.

Etiquetas: repetidos, sql, 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 01:08.