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

No se como eliminar los duplicados en esta consulta

Estas en el tema de No se como eliminar los duplicados en esta consulta en el foro de Mysql en Foros del Web. Hola foro! tengo la siguiente consulta: Código: select distinct locales.nombre, grupo, categorias.nombre as cat, locales.id_locales from locales join (categlocales join categorias on categorias.id_categorias = categlocales.id_categorias) ...
  #1 (permalink)  
Antiguo 24/10/2008, 16:17
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
No se como eliminar los duplicados en esta consulta

Hola foro! tengo la siguiente consulta:

Código:
select distinct locales.nombre, grupo, categorias.nombre as cat, locales.id_locales from locales join (categlocales join categorias on categorias.id_categorias = categlocales.id_categorias) on locales.id_locales = categlocales.id_locales where grupo = 'Casa'
En la misma hago una unión entre 3 tablas (locales, categorias y categlocales), en la tabla locales tengo el nombre del local junto con otra información (como dirección, teléfono etc.), mientras que en categorias tengo la categoria y el grupo al cual pertence el local (ej.: dentro del grupo "casa" tengo las categorias electrodomésticos, electrónica etc). Por último la tabla categlocales muestra la relación entre locales y categorias.

Mi problema concreto es que esta consulta me trae registros duplicados ya que si un local esta por ejemplo dentro del grupo "casa" y esta en las categorias electrónica, informática y electrodomésticos, el mismo aparace tres veces.

Alguién sabe como puede hacer para que solo aparezca una vez? Desde ya muchas gracias por su tiempo.
  #2 (permalink)  
Antiguo 24/10/2008, 20:08
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: No se como eliminar los duplicados en esta consulta

HOla chan prueba agregando a tu consulta al final la clausula GROUP BY locales.id_locales

Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 25/10/2008, 12:28
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
Respuesta: No se como eliminar los duplicados en esta consulta

Hola Cala932, gracias por responder, pero sabes que lo habia intentado antes eso de agrupar por id, pero me tiraba el siguiente error:

Server: Msg 8120, Level 16, State 1, Line 1
Column 'categorias.grupo' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 1
Column 'categorias.nombre' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 1
Column 'locales.id_locales' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

la sentencia que da dicho error es la siguiente:

Código:
select distinct locales.nombre, grupo, categorias.nombre as cat, locales.id_locales from locales join (categlocales join categorias on categorias.id_categorias = categlocales.id_categorias) on locales.id_locales = categlocales.id_locales where grupo = 'Casa' group by locales.id_locales
  #4 (permalink)  
Antiguo 25/10/2008, 14:06
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: No se como eliminar los duplicados en esta consulta

Hola chan, a ver las estructuras de tus tablas son las siguientes:

tabla: locales
id_locales
nombre
direccion
telefono
etc

tabla: categorias
id_categorias
grupo


tabla: categlocales
id_categoria
id_locales


Entonces prueba lo siguiente, la verdad que notaba un poco confusa tu consulta asi que prueba esto:
Código:
SELECT distinct locales.nombre, grupo, categorias.nombre as cat, locales.id_locales FROM

locales JOIN categlocales ON locales.id_locales = categlocales.id_locales  

JOIN categorias ON  categorias.id_categorias = categlocales.id_categorias

WHERE grupo = 'Casa' GROUP BY locales.id_locales
Comentanos como te fue.

saludos
__________________
->Aprender es un proceso que incluye el error..
  #5 (permalink)  
Antiguo 25/10/2008, 16:44
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
Respuesta: No se como eliminar los duplicados en esta consulta

Probe con el sql que me pasaste y me dio este error

Código:
Server: Msg 8120, Level 16, State 1, Line 1
Column 'locales.nombre' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 1
Column 'categorias.grupo' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 1
Column 'categorias.nombre' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Si le saco el group by funciona bien pero me trae registros duplicados, por ejemplo el local GARBARINO aparece tres veces, uno por la categoria Electrónica, uno por la categoría Electrodomésticos y otro por la categoría Informática...
  #6 (permalink)  
Antiguo 29/10/2008, 06:50
 
Fecha de Ingreso: abril-2005
Mensajes: 182
Antigüedad: 19 años
Puntos: 1
Respuesta: No se como eliminar los duplicados en esta consulta

Creo que ya me voy a dar por vencido respecto de este tema, no puedo encontrar ninguna solución!
  #7 (permalink)  
Antiguo 24/09/2009, 08:58
Avatar de animaciones33  
Fecha de Ingreso: diciembre-2008
Ubicación: Lanus
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: No se como eliminar los duplicados en esta consulta

Con respecto a lo ultimo, para que un group by no te tire errores tenes que incluir todos los campos que tenes en tu consulta, osea
si vos tenes esta consulta:

Código:
SELECT nombre, apellido FROM usuarios GROUP BY nombre
no te va a andar

tenes que hacer esto:

Código:
SELECT nombre, apellido FROM usuarios GROUP BY nombre, apellido
o el campo tiene que estar con una funcion, por ej:

Código:
SELECT nombre, MAX(numero) FROM usuarios GROUP BY nombre
proba con eso
sino avisame y reviso las consultas a ver que puede ser, espero que no sea MUY, MUY tarde
XD
  #8 (permalink)  
Antiguo 24/09/2009, 09:02
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: No se como eliminar los duplicados en esta consulta

Un año después?
Parece que ya es muy tarde.

Por favor no revivas temas viejos. Son políticas del foro.

saludos animaciones33
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 00:16.