Ver Mensaje Individual
  #26 (permalink)  
Antiguo 28/08/2009, 11:02
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta de movimientos secuenciales

Creo que confundes dos cosas: la primera consulta, que ya funcionaba (es la de huesos52), te permitía mostrarlo con hora de entrada y salida de cada producto:
Código sql:
Ver original
  1. SELECT e.articulo articulo, e.fecha_hora entradas,ifnull(s.fecha_hora,'--:--') salidas FROM entradas e LEFT JOIN salidas s ON e.id=s.id_entrada ORDER BY e.articulo;
Luego has pedido que se mostraran entradas y salidas ordenadas secuencialmente según la fecha_hora, y en eso estamos. Para esto te propuse una consulta con union all, pero tienes que ordenar por el campo fecha_hora, y para eso debes traértelo en la consulta. No puedes ordenar por fechahora, que en tu caso es un alias de un dato de cadena generado a partir del campo fecha_hora. Tienes que ordenar por el verdadero campo datetime, que es fecha_hora, pero para eso debes traértelo (son inconvenientes de las consultas con Union all)
sería esta:
Código sql:
Ver original
  1. SELECT e.articulo articulo, fecha_hora, DATE_FORMAT( e.fecha_hora, "%d-%m-%y" ) fecha, DATE_FORMAT( e.fecha_hora, "%H:%i" ) fechahora, 'E' tipo_mov FROM entradas e
  2. UNION ALL
  3. SELECT s.articulo articulo, fecha_hora, DATE_FORMAT( s.fecha_hora, "%d-%m-%y" ) fecha, DATE_FORMAT( s.fecha_hora, "%H:%i" ) fechahora, 'S' tipo_mov
  4. FROM salidas s
  5. ORDER BY fecha_hora, articulo, tipo_mov
Necesitas, pues, ese campo fecha_hora en el select para poder ordenar por él.

Aunque podrías no traerte ese campo, pero deberías ordenar reconstruyendo a partir de tus alias y convirtiendo a tiempo, con algo como esto:
Código sql:
Ver original
  1. SELECT e.articulo articulo, DATE_FORMAT( e.fecha_hora, "%d-%m-%y" ) fecha, DATE_FORMAT( e.fecha_hora, "%H:%i" ) fechahora, 'E' tipo_mov FROM entradas e
  2. UNION ALL
  3. SELECT s.articulo articulo, DATE_FORMAT( s.fecha_hora, "%d-%m-%y" ) fecha, DATE_FORMAT( s.fecha_hora, "%H:%i" ) fechahora, 'S' tipo_mov
  4. FROM salidas s
  5. ORDER BY str_to_date (concat(fecha,fechahora),"%d-%m-%y%H:%i"), articulo, tipo_mov

Última edición por jurena; 28/08/2009 a las 11:20