Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/06/2014, 16:19
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: error al listar nombre y puesto

Código PHP:
Ver original
  1. $query = "SELECT id_persona, siglas, nombre, paterno, materno
  2.                  FROM dir_titulo
  3.                  LEFT JOIN dir_persona USING (id_titulo)
  4.                  WHERE id_adscripcion LIKE '".$dr."%' order by id_persona;";
  5.                  
  6.             $query2 = "SELECT id_persona, puesto, id_adscripcion
  7.                  FROM dir_puesto
  8.                  LEFT JOIN dir_persona USING (id_puesto)
  9.                  WHERE id_adscripcion LIKE '".$dr."%' order by id_persona";

Esas dos consultas son diferentes, tu las usas como si retornaran los mismos valores pero la realidad es que una puede retornar un numero de resultados diferente de la otra.

El problema no es el registro 10009 o el que sea, el problema es que las dos consultas no son consistentes entre si, explota en ese numero pero podria explotar en cualquier otro y es solo una mera casualidad que no halla explotado antes.

Cuando trabajas con dos consultas paralelas que requieren ser consistentes, la mejor alternativa simpre es fucionarlas en una sola, de esta forma, es la base de datos la que revisa toda la integridad y te asegura que no ocurriran cosas como estas.

Código PHP:
Ver original
  1. $query = "SELECT DISTINCT
  2.             id_persona, siglas, nombre, paterno, materno, puesto, id_adscripcion
  3.           FROM
  4.             dir_titulo
  5.           LEFT JOIN
  6.             dir_persona ON dir_titulo.id_titulo = dir_persona.id_titulo
  7.           LEFT JOIN
  8.             dir_puesto ON dir_puesto.id_puesto = dir_persona.id_puesto
  9.           WHERE
  10.             id_adscripcion LIKE '".$dr."%' order by id_persona;";

Con esa consulta obtendrás los datos sin errores, no obstante, podrias considerar usar INNER en lugar de LEFT, desconociendo tus estructuras puede que no sea viable, pero si es posible te convendría hacerlo para evitar valores nulos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios