Ayuda con Contadores en interbase
Hola soy nuevo en este foro y tengo un problemilla que no me ha dejado dormir; Estoy trabajando con una base de datos en interbase y tengo dos tablas (Tabla 1 y Tabla 2) con los siguientes campos: Tabla 1: id, nombre, apellido,..., tipo, cargo, categoria. Tabla 2: tipo, cargo, categoria, sueldo_unitario, contador.
- La llave primaria de tabla 1 es id y se relaciona con mi tabla 2 a través de los campos: (tipo, cargo, categoria) como se habrán dado cuenta estos tres últimos campos son la llave primaria de Tabla 2. Ahora bien mi urgencia es saber como hago para que en el campo contador de Tabla 2 se almacene la cantidad de empleados y que este contador se actualice cada vez que ingrese o elimine un empleado. Algo como esto: tabla 2 tipo: A; cargo: B; categoria: C; sueldo_unitario: 10; contador: 1 tipo: A; cargo: B; categoria: D; sueldo_unitario: 350; contador: 4 tipo: C; cargo: B; categoria: D; sueldo_unitario: 1200; contador: 3 - En este ejemplo por lo menos represento lo que quiero: que el contador me muestre cuantos empleados de tipo A Cargo B y Categoria C existen, etc. Agradezco la ayuda y apreciaría cualquier colaboración de ustedes los expertos ya que soy nuevo en programacion y en este excelente foro. GRACIAS!! |
Si te digo la verdad, no entiendo el concepto que planteas.
|
Me da la impresión que lo que plantea se resolvería con un Procedimiento que sumara agrupando por los conceptos que el comenta y luego los resultados los trasladara a la otra tabla con un Update.
Un Saludo. |
Gracias por sus respuestas pero mi duda persiste, por ejemplo para yo saber cuantos empleados tengo en relación a cada tipo, cargo y categoria introduzco el siguiente código:
SELECT TIPO, CARGO, CATEGORIA, COUNT (*) FROM Tabla1, Tabla2 WHERE Tabla1.TIPO=Tabla2.TIPO AND Tabla1.CARGO=Tabla2.CARGO AND Tabla1.CATEGORIA=Tabla2.CATEGORIA GROUP BY TIPO, CARGO, CATEGORIA el resultado me lo demuestra así: tipo:A cargo:B categoria:C count:6 tipo:A cargo:B categoria:D count:2 ...y es correcto! pero Ahora bien como hago para que cada vez que inserte o elimine un empleado de la tabla 1, aparezca en el campo 'contador' que se corresponda con mi tabla2, la cantidad de empleados que existen producto de la inserción o eliminacion. Concuerdo mucho con el planteamiento de Marcos pero aún no estoy muy claro en el cómo construir ese código. Agradezco sus respuestas por favor! :) |
Bueno hay dos formas de hacerlo
En un trigger para Tabla2 en la base de datos que cada vez que se ingresa o elimina un registro en Tabla1, se dispare Otro en el componente de tu aplicacion TIBTable o lo que sea (No indicas que componentes de acceso estas usando :mad:), en el afterinsert o afterdelete ejecutes el codigo siguiente valido para la forma anterior.
Saludos |
Wow! muchas gracias cloayza de verdad muy agradecido por tu respuesta, de seguro este código que me facilitastes me servirá más adelante cuando haga la conexión; disculpa las molestias pero me podrías indicar el código para crear el trigger para tabla 2 cada vez que inserte o elimine un registro de tabla 1, no sé como hacerlo; lo que pasa es que soy nuevo programando! Saludos.
|
Resp
Bueno la respuesta que te dio cloayza la puedes complementar creando contador como campo calculado.
|
La franja horaria es GMT +2. Ahora son las 16:31:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi