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

Como no repetir registros en una consulta con varios join.

Estas en el tema de Como no repetir registros en una consulta con varios join. en el foro de Mysql en Foros del Web. Hola; Iremos al grano, tengo unas imágenes que se relacionan de forma m-n con conceptos, para guardar esta relacion tengo la tabla imag_conc que contiene ...
  #1 (permalink)  
Antiguo 22/05/2006, 14:32
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Como no repetir registros en una consulta con varios join.

Hola;

Iremos al grano, tengo unas imágenes que se relacionan de forma m-n con conceptos, para guardar esta relacion tengo la tabla imag_conc que contiene los índices de la tabla imagen y de la tabla conceptos. A su vez los conceptos pertenencen a una categoría (en relación 1-N).

Lo que quiero es a partir de una categoria saber cuantas imágenes están relacionadas con los conceptos de dicha categoría.

La consulta que he construido es así:

SELECT DISTINCT * FROM imag INNER JOIN (imag_conc INNER JOIN (conceptos INNER JOIN categoria ON categoria.id_subcat=conceptos.id_subcat AND categoria.id_subcat=44) ON conceptos.id_conc=imag_conc.id_conc)ON imag_conc.img=imag.img

La consulta me funciona pero coge imágenes repetidas es decir si una imagen está asociada a dos conceptos de la categoría me la incluye dos veces, cuando sólo me interesa una.

Pensé que con el distinct me funcionaría... pero no es así.

¿Alguien me puede ayudar? Estoy desesperado con esta maldita consulta!!

Gracias de antemano
  #2 (permalink)  
Antiguo 22/05/2006, 14:41
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Con distinct no te funcionara por que no te devuelve dos filas iguales, si no diferentes(una imagen pero diferentes conceptos), lo que puedes hacer es agruparlo por imagen:

Código PHP:
//
SELECT 
FROM imag INNER JOIN (imag_conc,conceptos,categoriaON (categoria.id_subcat=conceptos.id_subcat AND conceptos.id_conc=imag_conc.id_conc AND imag_conc.img=imag.img)
WHERE  categoria.id_subcat=44
GROUB BY imag
.img 
modifique algunas cosas, espero no haberme equivocado en los joins y con ese group by deberia funcionar, saludos.. cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 22/05/2006, 17:25
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Si señor, eso GROUP BY funciona de maravilla.

Ahora bien no entiendo exactamente lo que hace esta instrucción... no me conformo con que salga, ahora quiero entenderlo.

Un saludo y muchas gracias.
  #4 (permalink)  
Antiguo 23/05/2006, 07:30
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Holas, lo que haces es agrupar de acuerdo a la columna que le pases por parametro, es decir agruparas todos las tuplas que sean iguales (en la columna o columnas que le pasaste como parametro) en una misma tupla, el GROUP BY es mas usado junto con funciones de agregacion como MIN(), MAX(), COUNT(), etc.
aqui en mysql hispano encontraras una explicacion mas detallada y con ejemplos didacticos, saludos, cya
http://www.mysql-hispano.org/page.php?id=31&pag=8
__________________
"El Conocimiento es de todos, no solo de algunos"
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 05:41.