Hola,
No me cierra el diseño de tu tabla. Lo ideal sería tener una tabla con todos los documentos y otra con todos los movimientos.
Tabla documentos: id, titulo, etc.
Tabla movimientos: id (autoincrement), iddocumento, tipo (enum con 'ingreso' o 'egreso'), fecha (datetime)
Cuando sale un documento, insertas en movimientos:
Código PHP:
mysql_query("insert into movimientos(iddocumento,tipo,fecha) values('$id_del_documento','egreso',now())");
Cuando ingresa un documento, insertas también en movimientos:
Código PHP:
mysql_query("insert into movimientos(iddocumento,tipo,fecha) values('$id_del_documento','ingreso',now())");
Ahora, teniendo un documento en particular, saber la última vez que salió:
Código PHP:
mysql_query("select * from movimientos where iddocumento='$id_del_documento' and tipo='egreso' order by fecha desc");
La última vez que ingresó:
Código PHP:
mysql_query("select * from movimientos where iddocumento='$id_del_documento' and tipo='ingreso' order by fecha desc");
Si el campo fecha de la segunda consulta es menor que el campo fecha de la primer consulta, es porque ese documento no volvió. Para comparar esas fechas deberías usar strtotime().
Finalmente, para obtener todos los documentos que salieron y NO volvieron, podrías hacer algo así:
Código:
select d.* from movimientos m left join movimientos m2 on m.iddocumento=m2.iddocumento and m2.fecha>m.fecha and m2.tipo='ingreso' left join documentos d on m.iddocumento=d.id where m.tipo='egreso' and m2.id is null group by iddocumento
(Esto te da los datos de cada documento)
Saludos.