Foros del Web » Programando para Internet » PHP »

Problemas con consulta

Estas en el tema de Problemas con consulta en el foro de PHP en Foros del Web. Hola tengo un problema con mi consulta, tengo una base de datos donde guardo ingresos y egresos de documentos, cada egreso tiene un campo llamado ...
  #1 (permalink)  
Antiguo 23/01/2012, 10:08
Avatar de alears  
Fecha de Ingreso: enero-2012
Mensajes: 15
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Problemas con consulta

Hola tengo un problema con mi consulta, tengo una base de datos donde guardo ingresos y egresos de documentos, cada egreso tiene un campo llamado "identificador" donde guardo la ID del ingreso al que corresponde y en otros campos tengo la fecha de ingreso o egreso ($fecha), lo que necesito es crear una consulta que me de como resultado todos los ingresos menores a la fecha que eligo y que no hayan egresado aun es decir si un documento entro y salio 20 veces en ese rango de fechas no deberia mostrarme nada pero si en ese rango de fechas entro y no salio deberia mostrarme los datos del documento, la verdad estoy algo perdido y no encuentro la logica para hacer esto, si alguien me puede dar una mano le voy a estar eternamente agradecido, gracias a todos pongo el codigo para que lo vean no funciona y no se por donde darle

Código PHP:
$resulta=mysql_query("select * from documentos Where estado='egreso'
 and  fecha<'$fecha'"
,$link);
while(
$uno=mysql_fetch_array($resulta)){
$identegreso=$uno['identificador'];


$resulta2=mysql_query("select * from documentos where estado!='egreso' and
  ID!='$identegreso' and fecha<'$fecha'"
,$link);
while(
$dos=mysql_fetch_array($resulta2)){
$identingreso=$dos['ID'];

echo 
$identingreso."<br />";
}


  #2 (permalink)  
Antiguo 25/01/2012, 14:04
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 18 años, 3 meses
Puntos: 22
Respuesta: Problemas con consulta

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.

Etiquetas: query
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:13.