Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/04/2012, 13:32
LOD_Fredy
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 11 años, 3 meses
Puntos: 3
Respuesta: Consulta algo especial

Mira, esta es la consulta que se me ocurre para ordenar a las personas segun el numero de tablas en que aparezcan.

Código MySQL:
Ver original
  1. SELECT PE.pe_id,pe_nombre,pe_ape1,pe_ape2,pe_fenac,pe_sexo,EC.ec_descr 'Edo Civil',pe_nacion,pe_email1,pe_email2,pe_tel1,pe_tel2,pe_tel3,pe_tel4,pe_dircallenum,pe_colonia,CI.ci_descr,pe_liga
  2. ,IF(PX.px_id<>"",1,0),IF(PS.ps_id<>"",1,0),IF(PH.ph_id<>"",1,0),IF(PI.pi_id<>"",1,0)
  3. FROM personas PE
  4. INNER JOIN estadosciviles AS EC ON EC.`ec_id`=Pe.`ec_id`
  5. INNER JOIN ciudades AS CI ON CI.ci_id=Pe.`ci_id`
  6. LEFT JOIN personaeexperiencia AS PX ON PX.`pe_id`=Pe.`pe_id`
  7. LEFT JOIN personaescolaridad AS PS ON Ps.pe_id=Pe.`pe_id`
  8. LEFT JOIN personahabilidad AS PH ON Ph.`pe_id`=Pe.`pe_id`
  9. LEFT JOIN personaidioma AS PI ON PI.`pe_id`=Pe.pe_id
  10. LEFT JOIN experiencia AS EX ON EX.ex_id=Px.`ex_id`
  11. LEFT JOIN escolaridad AS ES ON ES.`es_id`=PS.`es_id`
  12. GROUP BY Pe.`pe_id` ORDER BY IF(PX.px_id<>"",1,0) DESC,IF(PS.ps_id<>"",1,0) DESC, IF(PH.ph_id<>"",1,0) DESC,IF(PI.pi_id<>"",1,0) DESC

Lo ideal seria poder mezclar esa consulta con la tuya para obtener la consulta perfecta ya que la mia simplemente ordena del que tiene los 4 1 (un 1 por cada tabla) al que tiene 3, 2, 1 pero si dentro de los que tienen 4 hay uno que tiene 3 registros de la tabla 1 por ejemplo y otro tiene 2, los podria ordenar mal.

Voy a usar mi consulta por mientras ya que es lo principal ahorita, pero como te digo, juntar tu consulta con la mia seria lo ideal.

Gracias.