SQL Tablas multidentidades

Hola, quisiera que alguien me ayudara con algo que me imagino es sencillo, se los explico con un ejemplo para entendernos mejor, Ej. Para mi software necesito guardar varias empresas con su identificador no repetitivo en otra tabla tengo que guardar las diferentes áreas de cada una de las empresas pero en la misma área y en orden de fechas, esta segunda trabla no la puedo separar entonces tendría que tener un identificador que aumentara con el identificador del área del ultimo guardado de la misma empresa a la que pertenece el área que estoy guardando, espero me aya explicado y me puedan ayudar. De antemano muchísimas gracias

1 Respuesta

Respuesta
1
A ver si lo entiendo bien, tienes una tabla tEmpresa de estilo siguiente:
    IdEmpresa Empresa
    001 'Empresa de Morcillas'
    002 'Empresa de Chorizos'
Y por otro lado necesitas tener un tabla tAreas del estilo siguiente:
    IdArea Área
    001 'Produccion'
    002 'Garantia'
Confírmamelo, porque no entiendo muy bien el problema que tienes, a ver si te podemos ayudar.
Gracias por responder, pero a lo que me refiero realmente es que ya tengo la tabla tEmpresa:
IdEmpresa Empresa
001 'Empresa de Morcillas'
002 'Empresa de Chorizos'
Y lo que necesito es tener un tabla tAreas del estilo siguiente:
IdEmpresa        IdArea               Area
001 001 'Produccion'
001 002 'Garantia'
002 001 'Administracion'
002 002 'Garantia'
y al gregar ej: Insertar_Area <Empresa> <Nombre area>     (Insertar_Area 001, 'Administracion')
IdEmpresa        IdArea               Area
001 001 'Produccion'
001 002 'Garantia'
001 003 'Administracion'
002 001 'Administracion'
002 002 'Garantia'
Que pueda insertar un área donde se incremente el id del área de la misma empresa a la que pertenecen todas sus áreas
Mmm...
Vale ya veo, ¿qué BBDD estas usando?
Si estas usando SQL/Oracle/MySQL deberías hacerlo mediante un Store Procedure, si estas usando un formulario de Access deberías de usar una programación de código VB para hacerlo.
Si es un store procedure debería de ser algo así:
Create procedure insertar_area (@Empresa as int, @Area as nvarchar(50))
As
    declare @existe as int
    declare @lastOne as int
    set @existe = (select count(*) from tAreas where IdEmpresa = @Empresa and Area = @Area)
/*   Evitamos repetir areas */
    if (@existe <> 0)
    begin
       set @lastOne = (select isnull(max(IdArea),0) from tAreas where IdEmpresa = @Empresa)+1
       insert into tAreas select @Empresa as IdEmpresa, @lastOne as IdArea, @Area as Area
    end
Esto más o menos sería en el caso de SQL2k5, si no es esta BBDD al menos creo que te servirá de guía.
Me fijado al darle no es <> 0 sino = 0
Vale, no se me había ocurrido... que buena idea, yo solo pensaba en la configuración del storeprocedure que me olvide por completo hacerlo dentro del código
ma a válido de gran ayuda...
Gracias y estoy a sus ordenes si le puedo ayudar en algo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas