Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2010
Avatar de Ares1989
Ares1989 Ares1989 is offline
Registrado
NULL
 
Registrado: oct 2010
Ubicación: Barinas - Venezuela
Posts: 6
Poder: 0
Ares1989 Va por buen camino
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!!
Responder Con Cita
  #2  
Antiguo 17-10-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si te digo la verdad, no entiendo el concepto que planteas.
Responder Con Cita
  #3  
Antiguo 17-10-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 17-10-2010
Avatar de Ares1989
Ares1989 Ares1989 is offline
Registrado
NULL
 
Registrado: oct 2010
Ubicación: Barinas - Venezuela
Posts: 6
Poder: 0
Ares1989 Va por buen camino
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!
Responder Con Cita
  #5  
Antiguo 18-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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 ), en el afterinsert o afterdelete ejecutes el codigo siguiente valido para la forma anterior.

Código SQL [-]
UPDATE TABLE2
SET CONTADOR=(SELECT COUNT(*) FROM TABLE1
                        WHERE Tabla1.TIPO=Tabla2.TIPO AND
                        Tabla1.CARGO=Tabla2.CARGO AND
                        Tabla1.CATEGORIA=Tabla2.CATEGORIA
                        GROUP BY TIPO, CARGO, CATEGORIA)
WHERE Tabla2.TIPO=:TIPO AND
          Tabla2.CARGO=:CARGO AND
          Tabla2.CATEGORIA=:CATEGORIA

Saludos
Responder Con Cita
  #6  
Antiguo 19-10-2010
Avatar de Ares1989
Ares1989 Ares1989 is offline
Registrado
NULL
 
Registrado: oct 2010
Ubicación: Barinas - Venezuela
Posts: 6
Poder: 0
Ares1989 Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 20-10-2010
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Bueno la respuesta que te dio cloayza la puedes complementar creando contador como campo calculado.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con interbase juanjoxi Firebird e Interbase 0 13-04-2007 22:45:50
Un query con contadores en un informe Rave Bairon Kumon Impresión 0 14-06-2006 20:03:47
StringGrid y contadores sergio_015 OOP 1 01-03-2005 00:09:04
Actualizar Contadores !! triniti SQL 5 03-08-2004 20:42:23
Ayuda con Interbase :D cmagno Firebird e Interbase 1 26-04-2004 19:26:32


La franja horaria es GMT +2. Ahora son las 09:09:44.


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
Copyright 1996-2007 Club Delphi