Ver Mensaje Individual
  #8 (permalink)  
Antiguo 06/10/2014, 15:13
burlock_spock
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Extraer registros con 2 campos dependientes

Buenas de nuevo,

Decidí rehacer la tabla afectada y ahora no tengo campos multivaluados. Para ello creé otras tablas en las que, mediante Foreign Keys (realmente no declaré FKs, solo relacioné los campos en la cláusula INNER JOIN), guardar estos campos multivaluados. El problema que esto me ha generado ahora es que, al hacer las búsquedas obtengo registros "duplicados". Lo explico con un ejemplo:

Mi tabla principal tiene los siguientes campos (indico solo unos cuantos):
ID, DNI, Nombre, Apellidos, Sexo, Teléfono, Localidad...
Como cada persona puede hablar uno o más idiomas cree una tabla que los almacenase de la siguiente manera:
ID, DNI, Idioma, Nivel.

Si Juanito, con DNI 11222333D habla un par de idiomas, tendrá 2 entradas en la tabla de idiomas, tal que así:

1, 11222333D, Español, LenguaMaterna
2, 11222333D, Inglés, B1

Decido realizar una consulta que extraiga toda la información de aquellos usuarios masculinos que vivan en Madrid. Mi deseo es poder tratar el registro generado para cada usuario, y mostrarlo por pantalla. El problema es que, con el INNER JOIN, para Juanito me ha generado 2 registros:
11222333D, Juanito, Gutierrez, Hombre, 600100400, Madrid, Español (idioma)
11222333D, Juanito, Gutierrez, Hombre, 600100400, Madrid, Inglés (idioma)
Obteniendo así información redundante.
Como MySQL entiende que no son registros duplicados, DISTINCT no funciona y, tras varias pruebas y bastante buscar, no he dado con la forma "sana" de remediarlo. Yo quiero que solo me devuelva 1 registro en el que aparezcan todos los datos, así como los 2 idiomas. Solo en 1 registro. ¿Es eso posible?