Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2014, 16:20
burlock_spock
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Extraer registros con 2 campos dependientes

Hola,
Tengo una duda que no consigo resolver. La planteo sin más:

Sobre una BBDD MySQL con muchos campos que guarda información sobre personas (nombre, telefono, idiomas hablados, nivel de cada idioma hablado...) quiero hacer una consulta que extraiga todos los registros que cumplan una serie de condiciones. Hasta aquí todo normal (SELECT * FROM `tabla` WHERE blablabla). La dificultad viene porque hay un par de campos interrelacionados. Me explico: ambos campos son varchar que en su interior guardan diferentes palabras separadas por un "|". El primer campo guarda idiomas (ej. spanish|english|german). El otro campo guarda el nivel existente para cada idioma (ej. C2|B1|B2).

Lo explico mejor con un ejemplo. La idea es que un usuario pueda buscar personas que tengan, por ejemplo, nivel C2 en aleman. La query más lógica para ello sería "SELECT * FROM `tabla` WHERE `idioma` LIKE '%german%' AND `nivel` LIKE '%C2%'". Nótese el LIKE porque en el campo se guarda más información. Pero claro, si yo tengo 2 registros en mi BBDD como los siguientes:

"Juan" "666666666" "spanish|english|german" "C2|B1|C2"
"Pedro" "677766666" "spanish|english|german" "C2|B1|B1"

Al hacer la búsqueda anterior me va a devolver los 2 registros, cuando solo debería devolverme el de Juan. Teniendo los datos guardados así, ¿se os ocurre alguna manera de extraer una query que solo devuelva el registro de Juan?

Si lo veis imposible y creéis que hay otra manera que no implique cambiar tooooodo lo que tengo picado, o cualquier otra idea o sugerencia, estaría encantado de escucharla.

He intentado ponerlo todo lo claro que se me ha ocurrido, sin extenderme una eternidad. En cualquier caso, si alguien tiene alguna pregunta para aclararse con lo que he dicho, que me diga sin problemas.

Gracias por adelantado.