PostgreSQL - filtrar los registros repetidos

 
Vista:
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

filtrar los registros repetidos

Publicado por zendi (131 intervenciones) el 13/02/2018 20:15:47
Estoy tratando de filtrar unos registros repetidos con este codigo pero no se como, lo he probado con la clausula SUM pero no lo hace. Hay alguna otra forma?
La idea es surprimir los registros repetidos.
si alguien pudiera ayudarme.


$registros = "SELECT


propietarios.nroapto,


propietarios.cedula,


sum(gastos1.monto) AS total,


gastos1.fecha,


gastos1.codigo


FROM propietarios,


gastos1,tipos_gastos


WHERE gastos1.cod_tipo_gasto = tipos_gastos.codigo


GROUP BY propietarios.nroapto, propietarios.cedula, gastos1.fecha, gastos1.codigo";
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.
Val: 16
Ha disminuido 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

filtrar los registros repetidos

Publicado por Leonardo Daniel A. (10 intervenciones) el 13/02/2018 20:43:56
Hola... primero no hagas eso de poner los querys asi..... ponlos compactos... y hay una etiqueda aqui que se llama codigo </> lo que pongas dentro se pone como codigo de programacion

1
2
3
$sql= "SELECT propietarios.nroapto, propietarios.cedula, sum(gastos1.monto) AS total, gastos1.fecha, gastos1.codigo  ";
$sql.= "FROM propietarios, gastos1,tipos_gastos WHERE gastos1.cod_tipo_gasto = tipos_gastos.codigo ";
$sql.= "GROUP BY propietarios.nroapto, propietarios.cedula, gastos1.fecha, gastos1.codigo";

Segundo... asi como lo platicas no entendemos.. no dices que datos tienen tus "registros repetidos", el sum es para sumar datos ya sea de todos los registros o de algun grupo marcandolo con el group by ?? eso es lo que quieres ? sumar por grupos ? o solo eliminar duplicados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

filtrar los registros repetidos

Publicado por zendi (131 intervenciones) el 13/02/2018 21:12:01
Oye gracias primeramente por responder Leonardo, bueno disculpa que no lo encerrè en etiqueta codigo. En realidad deseo eliminar los duplicados, la verdad le buscado las mil formas pero no logro hacerlo, te agradezco a ayuda.

ejemplo: los registros aparecen asi:

nroapto fecha cedula gasto
01-01 2018-02-01 638479 100000,00
01-01 2018-02-01 638479 100000,00

01-02 2018-02-01 897145 100000,00
01-02 2018-02-01 897145 100000,00

01-03 2018-02-01 235698 100000,00
01-03 2018-02-01 235698 100000,00

La idea es eliminar lo que se repite

quedarian asi:

nroapto fecha cedula gasto
01-01 2018-02-01 638479 100000,00
01-02 2018-02-01 897145 100000,00
01-03 2018-02-01 235698 100000,00
claro por supuesto estos son pocos registros, en realidad, pero pueden haber infinidad de ellos para los gastos.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 16
Ha disminuido 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

filtrar los registros repetidos

Publicado por Leonardo Daniel A. (10 intervenciones) el 13/02/2018 21:39:17
Hola, primero hay un error en el select... estas haciendo un FROM de Propietarios, Gastos1, Tipos_Gastos, pero en el WHERE solo estas ligando Gastos1.cod_tipo_gasto = Tipos_Gastos.codigo...? pero en el select no estas usando ningun campo de la tabla Tipos_gastos, asi que no veo porque la integraste ??

Segunto, en ningun lado se esta ligando Propietarios con alguna otra tabla, supongo que se relaciona con Gastos1, pero te "comiste" ese WHERE

-- Si vas a usar algun campo de Tipos_Gastos, agregalo al select, si no, entonces quita ese WHERE... y te falta agregar el WHERE de Propietatios a Gastos1..... suponiendo que no meteremos ningun campo de Tipos_Gastos, yo lo pondria asi
1
2
3
SELECT propietarios.nroapto, propietarios.cedula, gastos1.monto, gastos1.fecha, gastos1.codigo
       FROM propietarios, gastos1 WHERE propietarios.nroapto = gastos1.noapto
       GROUP BY propietarios.nroapto, propietarios.cedula, gastos1.monto, gastos1.fecha, gastos1.codigo

aunque en lo personal, prefiero usar Inner Join Left Join, Right Join



SQL-Joins
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 39
Ha disminuido 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

ayuda con query

Publicado por xve (55 intervenciones) el 14/02/2018 08:44:51
Muy buenas esa imagen Leonardo... gracias por compartirla!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 77
Bronce
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

filtrar los registros repetidos

Publicado por zendi (131 intervenciones) el 17/02/2018 21:36:55
Bueno eliminé el campo
1
, gastos1.codigo
del GROUP BY y funciono con exito y disculpa que te habia dicho que habia que eliminar registros, el asunto era sumar el campo monto y agrupar cometí el error en decirte eso, porque estaba presionado para entregar esto.
De todos modos usaré las funciones y clausulas de la imagen.

1
2
3
4
5
$sql= "SELECT propietarios.nroapto, propietarios.cedula, sum(gastos1.monto) AS total, gastos1.fecha ";
 
$sql.= "FROM propietarios, gastos1,tipos_gastos WHERE gastos1.cod_tipo_gasto = tipos_gastos.codigo ";
 
$sql.= "GROUP BY propietarios.nroapto, propietarios.cedula, gastos1.fecha";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

filtrar los registros repetidos

Publicado por martin (121 intervenciones) el 15/02/2018 21:50:14
Si no vas a utilizar ninguna función agregada(SUM,MAX,MIN,AVG etc) con un simple DISTINCT basta.

SELECT DINSTINCT campo1,campo2,... from tabla; y listo, no vas a tener ninguna tupla repetida
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar