Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

mi proyect

Estas en el tema de mi proyect en el foro de Bases de Datos General en Foros del Web. Hola que tal, disculpen... necesito que me aclaren algo... este es mi proyecto que me fue asignado, Generar una bd para el dpto de transito ...
  #1 (permalink)  
Antiguo 18/11/2008, 11:08
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
mi proyect

Hola que tal, disculpen... necesito que me aclaren algo...

este es mi proyecto que me fue asignado,

Generar una bd para el dpto de transito de la localidad...

el dpto de transito requiere de una bd que permita registrar las infracciones cometidas por los conductores.

diariamente a cada agente de transito se le entrega un block de notas de infracciones, quienes al identificar algun conductor que cometa alguna infraccion, le levanta la nota, especificando la infraccion que cometio el conductor, teniendo que pasar el conductor a las oficinas a pagar las multas correspondientes.

al finalizar el dia, los agentes de transito, entregan las notas levantadas, para que estas se capturen y calcule la multa correspondiente, cada infraccion, tiene un costo de multa, si la multa se paga en los tres primeros dias siguientes a la infraccion, se realiza un descuento del 50 %



¿MI PROBLEMA ES QUE NO SE COMO CALCULAR EL DESCUENTO DEL 50%?

TODO LO DEMAS YA LO TENGO... SOLO ES ESO... QUE NO TENGO LA MAS MINIMA IDEA DE COMO HACER ESO....


AYUDAAAA!!!
  #2 (permalink)  
Antiguo 18/11/2008, 11:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: mi proyect

butty,
el problema no es realmente calcular el 50%, pues eso lo resolverás dividiendo por 2, o multiplicando por 50 y dividiendo por 100. Creo que lo importante es que genere el cargo según la fecha de manera automática, es decir, que si han pasado más de tres días, el cargo sea el 100%, y si no han pasado, se genere un cargo del 50%.
Dinos qué motor de bases de datos, qué base de datos utilizas (Oracle, PostgreSQL, MySQL, SQLServer, etc.) para que podamos aconsejarte la sintaxis apropiada para esa consulta...
  #3 (permalink)  
Antiguo 18/11/2008, 11:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mi proyect

Cita:
Iniciado por jurena Ver Mensaje
butty,
el problema no es realmente calcular el 50%, pues eso lo resolverás dividiendo por 2, o multiplicando por 50 y dividiendo por 100. Creo que lo importante es que genere el cargo según la fecha de manera automática, es decir, que si han pasado más de tres días, el cargo sea el 100%, y si no han pasado, se genere un cargo del 50%.
Dinos qué motor de bases de datos, qué base de datos utilizas (Oracle, PostgreSQL, MySQL, SQLServer, etc.) para que podamos aconsejarte la sintaxis apropiada para esa consulta...

estoy usando MySQL query Browser
  #4 (permalink)  
Antiguo 18/11/2008, 12:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: mi proyect

Código sql:
Ver original
  1. SELECT campofecha fechainfraccion, CURDATE() fechapago, IF(DATE_ADD (campofecha, INTERVAL 3 DAY) < CURDATE(), ROUND(cantidad,2), ROUND((cantidad/2),2)) multa FROM tabla


No sé cómo se llama tu tabla, ni cómo se llaman los campos. He puesto como nombre tabla y como nombres de campo campofecha; también he puesto un campo cantidad por si las multas pueden tener distintas cantidades; si la cantidad es fija, no sería necesario el campo... También te he añadido un ROUND para redondear la cantidad de la multa, y el resultado de la división a dos decimales.

Observa que lo que hago es mostrar la fecha de la multa, la fecha del día en se va a pagar (curdate() es la fecha del día de hoy); luego condiciono a que si la fecha de multa más tres días es anterior a la fecha de hoy, pague el total, y si es posterior, sólo la mitad...

Échale un vistazo y nos dices si es lo que buscas...
  #5 (permalink)  
Antiguo 18/11/2008, 12:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mi proyect

Cita:
Iniciado por jurena Ver Mensaje
Código sql:
Ver original
  1. SELECT campofecha fechainfraccion, CURDATE() fechapago, IF(DATE_ADD (campofecha, INTERVAL 3 DAY) < CURDATE(), ROUND(cantidad,2), ROUND((cantidad/2),2)) multa FROM tabla


No sé cómo se llama tu tabla, ni cómo se llaman los campos. He puesto como nombre tabla y como nombres de campo campofecha; también he puesto un campo cantidad por si las multas pueden tener distintas cantidades; si la cantidad es fija, no sería necesario el campo... También te he añadido un ROUND para redondear la cantidad de la multa, y el resultado de la división a dos decimales.

Observa que lo que hago es mostrar la fecha de la multa, la fecha del día en se va a pagar (curdate() es la fecha del día de hoy); luego condiciono a que si la fecha de multa más tres días es anterior a la fecha de hoy, pague el total, y si es posterior, sólo la mitad...

Échale un vistazo y nos dices si es lo que buscas...

Disculpa el descaro... aqui te pongo el script...

create database deptransito;
create table agentes (Nombre varchar (10), Ap_Pat varchar (10), Ap_Mat varchar (10), nagente int primary key)
create table conductor (Nombre varchar (10), Ap_Pat varchar (10), Ap_Mat varchar (10), id_licencia int primary key)
create table multas (fecha_exp date, fecha_pago date, id_multa int primary key)
create table tipomultas (idtipomultas int primary key, descripcion varchar (150), costo float)

alter table multas add column conductor int
alter table multas add constraint tiene foreign key (conductor) references conductor (id_licencia)
alter table multas add column tipomultas int
alter table multas add constraint esdeltipo foreign key (tipomultas) references tipomultas (idtipomultas)
alter table multas add column agente int
alter table multas add constraint aplicas foreign key (agente) references agentes (nagente)
alter table multas add column totalapagar int

insert into agentes (Ap_Mat, Ap_Pat, nagente, Nombre) values ('Contreras', 'Almazan', '1', 'Fernando')
insert into agentes (Ap_Mat, Ap_Pat, nagente, Nombre) values ('Garcia','Mendez','2', 'Victor')
insert into agentes (Ap_Mat, Ap_Pat, nagente, Nombre) values ('Flores','Galindo','3', 'Fernando')

insert into conductor (Ap_Mat, Ap_Pat, id_licencia, Nombre) values ('Rodriguez', 'Perez', '1', 'Juan')
insert into conductor (Ap_Mat, Ap_Pat, id_licencia, Nombre) values ('Quiñones','Rodrigues','2','Jaime')
insert into conductor (Ap_Mat, Ap_Pat, id_licencia, Nombre) values ('Gonzales','Hernandez', '3','Isaac')

insert into tipomultas (costo, descripcion, idtipomultas) values ('1300','faltas a la autoridad','1')
insert into tipomultas (costo, descripcion, idtipomultas) values ('500','exceso de velocidad','320')
insert into tipomultas (costo, descripcion, idtipomultas) values ('250','pasarse luz roja','510')

insert into multas (agente, conductor, fecha_exp, id_multa, tipomultas) values ('1','1', '2008-03-23','1','1')
insert into multas (agente, conductor, fecha_exp, id_multa, tipomultas) values ('2','2', '2008-02-22','2','320')
insert into multas (agente, conductor, fecha_exp, id_multa, tipomultas) values ('3','3', '2008-01-21','3','510')
  #6 (permalink)  
Antiguo 18/11/2008, 13:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: mi proyect

Necesito saber qué operación vas a hacer. Por lo que veo todavía no tienes la fecha de pago. ¿Cómo la vas a meter, directamente tecleando la fecha o incluyendo la fecha del día de hoy? Necesito saber ese dato. Piensa que si vas a cargar el coste, tendrás que usar la sintaxis con UPDATE...
Cuenta un poco qué vas a hacer...
  #7 (permalink)  
Antiguo 18/11/2008, 14:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mi proyect

lo que quiero hacer... o planeo... es que en la tabla multas mi idea era comparar la fecha_exp con la fecha_pago y asi.. si la fecha de pago es menor a 3 dias de la fecha de exp... se aplica el descuento del 50%

el costo de la multa es fija... y la tengo almacenada como podras ver en la tabla "tipo multas"

bueno y lo que se me dificulta es como hacer la comparacion de fechas... y almacenar el costo en la tabla multas en el campo "totalapagar".

las fechas de exp.. tanto como la de pago se agregan manualmente...
  #8 (permalink)  
Antiguo 18/11/2008, 15:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: mi proyect

Prueba esta después de introducir las fechas de pago.
Código sql:
Ver original
  1. UPDATE multas INNER JOIN tipomultas ON tipomultas.idtipomultas = multas.tipomultas SET multas.totalapagar = IF(date_add(multas.fecha_exp, INTERVAL 3 DAY) < multas.fecha_pago, ROUND(tipomultas.costo,2), ROUND(tipomultas.costo/2,2))

Última edición por jurena; 18/11/2008 a las 15:55
  #9 (permalink)  
Antiguo 18/11/2008, 18:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: mi proyect

jurena... eres el mejor!
muchas gracias!
  #10 (permalink)  
Antiguo 19/11/2008, 00:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: mi proyect

Una aclaración más, por la que entenderás algunas de mis preguntas anteriores. Esto te sirve para actualizar los datos de totalapagar de multas y lo hace de todas, pero para eso necesitas haber incluido todas las fechas de pago. Por otra parte, la fecha no se puede generar en un momento distinto al del pago. Es decir, no puedes cobrar una cantidad sin saber antes la fecha, por lo que no tiene sentido que la fecha se incluya mucho antes, sino en el momento en que se va a generar el pago. Por eso te había preguntado si te interesaba usar CURDATE(), que introduce la fecha del día actual. Tampoco deberías hacer un cambio general como ese que hace la consulta, sino cargar el id_multa y cambiar sólo ese registro de multa: si el id_multa es el 150 te bastará añadir a la consulta WHERE id_multa = 150.
Tendrás que vigilar más cosas, y algunas tendrás que hacerlas con programación, pero esta es la idea.
  #11 (permalink)  
Antiguo 22/11/2008, 21:23
(Desactivado)
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
no4

I cant wait till I get the gold I purchased for so far im hearing freinds saying its a trustworthy site.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:57.