Inicio > SQL Server > mristol > SQL Tablas multidentidades

SQL Tablas multidentidades

Experto:
Usuario:
Fecha: 12/05/2008
Valoración: (5,00 sobre 5) Categoría: SQL Server
12/05/2008
rdodeluca, usuario preguntando en SQL Server
Usuario
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 areas de cada una de las empresas pero en la misma area y en orden de fechas, esta segunda trabla no la puedo separar entonces tendria que tener un identificador que aumentara con el identificador del area del ultimo guardado de la misma empresa a la que pertenece el area que estoy guardando, espero me aya explicado y me puedan ayudar. De antemano muchisimas gracias
 
12/05/2008
rdodeluca, experto respondiendo en SQL Server
Experto
A ver si lo entiendo bién, 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            Area
    001               'Produccion'
    002               'Garantia'
Confirmamelo, porque no entiendo muy bién el problema que tienes, a ver si te podemos ayudar.
12/05/2008
rdodeluca, usuario preguntando en SQL Server
Usuario
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 area donde se incremente el id del area de la misma empresa a la que pertenecen todas sus areas
12/05/2008
rdodeluca, experto respondiendo en SQL Server
Experto
mmm...
Vale ya veo, ¿que 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 asi:
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 guia.
12/05/2008
rdodeluca, experto respondiendo en SQL Server
Experto
me fijado al darle no es <> 0 sino = 0
12/05/2008
rdodeluca, usuario preguntando en SQL Server
Usuario
Vale, no se me habia ocurrido... que buena idea, yo solo pensaba en la configuracion del storeprocedure que me olvide por completo hacerlo dentro del codigo
 
ma a valido de gran ayuda...
gracias y estoy a sus ordenes si le puedo ayudar en algo
Enlaces patrocinados