Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/02/2014, 10:45
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como puedo no seleccionar los datos duplicados

¿Es mi impresión, o has estado realmente dandole vueltas al problema de los duplicados desde hace tiempo?

Bueno, en principio la cosa no es muy difícil, aunque sin ver los datos de tus tablas debemos suponer algunas cosas.
Toda la solución se basa en dos premisas:
1) No deben mostrarse aquellos registros donde uno o más campos predeterminados se repitan entre dos o más registros.
2) Deben mostrarse aquellos registros donde los valores entre dos campos predeterminados sean diferentes.

La solución es simplemente resolver aquellas consultas donde SI SE CUMPLAN esas premisas, para usarlo a fin de EXCLUIR los casos donde se cumple.

¿Se entiende?

Suponiendo que los cuatro campos mencionados en el SELECT pueden duplciarse en diferentes registros, para que se muestren esos, debería cumplirse que:

Código MySQL:
Ver original
  1. SELECT  `usuarios`, `rut`, `nombreusuario`,  `grupo`,  `id_cargo_funcional`
  2. FROM resultados1
  3. GROUP BY `usuarios`, `rut`, `nombreusuario`,  `grupo`,  `id_cargo_funcional`
  4. HAVING COUNT(*) > 1

Para que se se cumpla la segunda premisa, ya tienes tu misma la solcucioón:

Código MySQL:
Ver original
  1. SELECT  `usuarios` ,  `rut` ,  `nombreusuario` ,  `grupo` ,  `id_cargo_funcional`
  2. FROM resultados1
  3. WHERE grupo <> id_cargo_funcional

Para integrar eso, sería simplemente:
Código MySQL:
Ver original
  1. SELECT  `usuarios`,  `rut` ,  `nombreusuario`, `grupo` ,  `id_cargo_funcional`
  2. FROM resultados1
  3. WHERE grupo <> id_cargo_funcional
  4.     AND (`usuarios`,  `rut` ,  `nombreusuario`, `grupo` ,  `id_cargo_funcional` )
  5.       NOT IN (SELECT  `usuarios`, `rut`, `nombreusuario`,  `grupo`,  `id_cargo_funcional`
  6.             FROM resultados1
  7.             GROUP BY `usuarios`, `rut`, `nombreusuario`,  `grupo`,  `id_cargo_funcional`
  8.             HAVING COUNT(*) > 1)
Ahora bien, hay al menos una cosa que debe quedar claro: Para lo que es BBDD, existe duplicidad de registros sí y sólo si todos los campos entre dos registros cualesquiera tienen exactamente los mismos valores, en el mismo orden y para los mismos campos.
Cualquier otra cosa no es duplicidad.

Esto lo remarco, porque para BBDD, esto NO es duplicidad:
Cita:
1 2 3 4 5 6 7 8 9
1 2 3 3 5 6 7 8 9
¿Estamos de acuerdo?

Si lo que te planteo no es lo que tu estás buscando necesitaremos que nos postees un caso de ejemplo de a qué "duplicidad" te estás refiriendo, con un caso real de tu base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)