Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2012, 17:38
LOD_Fredy
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Consulta algo especial

Hola a todos, tenia rato que no pasaba por aqui, hoy respondi algunos temas de los que se esperando les sirva mi comentario.

Hoy vengo pidiendo ayuda de nuevo, no se mucho de mysql y me estoy viendo en la necesidad xD de realizar una consulta de la siguiente forma:

tengo las siguientes tablas

experiencia (ex_id,ex_descr)
habilidades(ha_id,ha_descr)
idiomas(id_id,id_descr)
personas(pe_id,pe_nombre,ci_id)
ciudad(ci_id,ci_descr)
personaexp(pe_id,ex_id)
personahab(pe_id,ha_id)
personaidi(pe_id,id_id)

las tres ultimas permiten a una persona tener mas de una experiencia, habilidad o idioma, ciudad tiene una cada persona.

supongamos los siguientes datos de las tablas

experiencia:
1,'contador'
2,'albañil'
3,'tenico automotriz'

habilidades:
1,'trabajo bajo presion'
2,'buen trato'

idiomas:
1,'español'
2,'ingles'
3,'frances'

personas:
1,'juan',2
2,'luis',1
3,'jorge',1

personaexp (recuerden son ids):
1,2
1,3
2,1
3,3

personahab:
1,1
3,1
3,2

personaidi:
1,1

El asunto esta en que se debe ordenar las personas a partir de cual tenga mas coincidencias en las tres ultimas tablas, para el ejemplo necesitaria que sucediera algo asi,

pe_id=1,pe_descr='juan'
pe_id=3,pe_descr='jorge'
pe_id=2,pe_descr='luis'

juan sale en las tres tablas
jorge en dos
luis en una

en caso de que no saliera en ninguna, no deberia aparecer en el resultado de la consulta. A esto le agrego que hay filtros, es decir, se va a buscar por sexo, experiencia y/o idioma, aunque supongo que teniendo la consulta anterior, seria nada mas poner condiciones en el where para que filtre. Estaria genial que ademas de ordenarlos asi, si hubiera 4 que salen en las 3 tablas, se checara ahora de las tablas, el que tuviera mas registros para ordenarlos de mayor a menor numero de registros (es mucho pedir, lo se xD)

Igual y la consulta esta sencilla pero la verdad le he dado vueltas al asunto y no tengo idea de como hacer que aparezcan asi, si todo estuviera en una misma tabla seria mas sencillo, pero desde tablas separadas no tengo idea.

Gracias y disculpen la molestia.