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

evitar duplicados en consulta multiple

Estas en el tema de evitar duplicados en consulta multiple en el foro de Mysql en Foros del Web. buenas, tengo diferentes tablas, con varios datos de candidatos separados por datos_personales, datos_profesionales, etc... para mostrar toda la info, necesito hacer un SELECT de todas ...
  #1 (permalink)  
Antiguo 25/09/2011, 15:01
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 17 años, 11 meses
Puntos: 3
evitar duplicados en consulta multiple

buenas,

tengo diferentes tablas, con varios datos de candidatos separados por datos_personales, datos_profesionales, etc...

para mostrar toda la info, necesito hacer un SELECT de todas las tablas. y la verdad es que consigo lo que quiero. el problema es que hay algun registro, que no se porque, me lo duplica. todas las tablas estan referenciadas con un idcandidato

Código:
$sql1 = "SELECT DISTINCT
	DC.idcandidato,
    DP.nombre,
    DP.apellidos,
    DP.sexo,
    DP.provincia,
    DE.nivel,
    DO.disponibilidad_horaria,
    DO.viajar,
    DO.vehiculo,
    DO.permiso_conducir ,
	DPR.tipo_experiencia
FROM 
    datos_candidatos DC
    INNER JOIN datos_personales DP ON DC.idcandidato = DP.idcandidato 
    INNER JOIN datos_estudios DE ON DC.idcandidato = DE.idcandidato 
    INNER JOIN datos_otros DO ON DC.idcandidato = DO.idcandidato 
	INNER JOIN datos_profesionales DPR ON DC.idcandidato = DPR.idcandidato $where_sql";
el WHERE contiene unos cadena formada con los parametros de busqueda. lo casual es que hay algunos candidatos repetidos. que explicación puede haber?

saludos!
  #2 (permalink)  
Antiguo 25/09/2011, 17:25
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 8 años, 2 meses
Puntos: 48
Respuesta: evitar duplicados en consulta multiple

Lo que pase es que el DISTINCT solo funciona cuando todos los campos son iguales.
si en una consulta hay 1 campo diferente da la sensacion de que te lo duplica pero en realidad es distinto y por eso lo trae.
  #3 (permalink)  
Antiguo 26/09/2011, 05:29
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: evitar duplicados en consulta multiple

gracias rodrhigo. el caso es que al clickar encima del nombre, paso el idcandidato y muestro en un form toda la info del contacto. lo curioso es que yo pensaba que estaria con 2 id diferentes, pero está con el mismo id. y lo curiosio que no pasa con todos..

como podria hacerlo entonces...?
  #4 (permalink)  
Antiguo 26/09/2011, 08:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 8 meses
Puntos: 300
Respuesta: evitar duplicados en consulta multiple

ferranweb,
es como te ha dicho Rodrhigo, el distinct es como si hicieras group by por todos los campos del select a la vez, y basta que uno de ellos tenga un dato diferente para que lo considere distinto. En lugar de distinct usa el group by DC.idcandidato
  #5 (permalink)  
Antiguo 26/09/2011, 11:07
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: evitar duplicados en consulta multiple

pero como quedaria la consulta? GROUP BY DC.idcandidato?

he quitado el DISTINCT SELECT DC... y la consulta se puede decir que me sale igual. y si hago un SELECT DC.idcandidato....... WHERE.... GROUP BY DC.idcandidato. pero no me da ningun resultado, de que forma tengo que ejecutar la consulta?

gracias!
  #6 (permalink)  
Antiguo 26/09/2011, 11:13
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: evitar duplicados en consulta multiple

ya lo consegui amigos!!! y teniais razón, el GROUP BY me evita los duplicados!!!!

saludos y gracias!!

Etiquetas: duplicados, select, 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 11:58.