Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

adalmirmoreira

Relacionamento entre três tabelas.

Recommended Posts

Bom dia,

 

Sou novo no SQL e preciso de uma ajuda.

 

Tenho três tabelas sendo:

1 - Tabela Empresa

2 - Tabela Grupo de Empresa

3 - Empresa_Grupo

 

Na tabela Empresa tenho que pegar todos os códigos das empresas, na tabela Grupo só tenho um grupo cadastrado(código 1). Preciso inserir na tabela Empresa_grupo os seguintes campos:

 

ID_EMpresa_GRupo, Codigo_da_empresa, Codigo_do grupo, Data

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Adalmir. Acredito que o exemplo abaixo possa ajudar em sua dúvida:

--DROP TABLE [dbo].[tabCdRelEmpresaGrupo]
--DROP TABLE [dbo].[tabCdEmpresa]
--DROP TABLE [dbo].[tabCdEmpresaGrupo]
GO

--Cria tabela tabCdEmpresa
CREATE TABLE [dbo].[tabCdEmpresa](
	[codEmpresa] [int] IDENTITY(1,1) NOT NULL,
	[Descricao] [varchar](255) NULL,
	[Deleted] [bit] NULL,
PRIMARY KEY CLUSTERED 
(
	[codEmpresa] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

--Cria tabela tabCdEmpresaGrupo
CREATE TABLE [dbo].[tabCdEmpresaGrupo](
	[codEmpresaGrupo] [int] IDENTITY(1,1) NOT NULL,
	[Descricao] [varchar](255) NULL,
	[Deleted] [bit] NULL,
PRIMARY KEY CLUSTERED 
(
	[codEmpresaGrupo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

--Cria tabela tabCdRelEmpresaGrupo
CREATE TABLE [dbo].[tabCdRelEmpresaGrupo](
	[codRelEmpresaGrupo] [int] IDENTITY(1,1) NOT NULL,
	[codEmpresa] [int] NULL,
	[codEmpresaGrupo] [int] NULL,
	[dta] [datetime] NULL,
	[deleted] [bit] NULL,
PRIMARY KEY CLUSTERED 
(
	[codRelEmpresaGrupo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


--Seta valor default para coluna deleted
ALTER TABLE [dbo].[tabCdEmpresa] ADD  DEFAULT ((0)) FOR [Deleted]
GO
--Seta valor default para coluna deleted
ALTER TABLE [dbo].[tabCdEmpresaGrupo] ADD  DEFAULT ((0)) FOR [Deleted]
GO
--Seta valor default para coluna dta
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo] ADD  DEFAULT (getdate()) FOR [dta]
GO
--Seta valor default para coluna deleted
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo] ADD  DEFAULT ((0)) FOR [deleted]
GO
--Relação
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo]  WITH CHECK ADD  CONSTRAINT [FK_tabCdRelEmpresaGrupo_tabCdEmpresa] FOREIGN KEY([codEmpresa])
REFERENCES [dbo].[tabCdEmpresa] ([codEmpresa])
GO
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo] CHECK CONSTRAINT [FK_tabCdRelEmpresaGrupo_tabCdEmpresa]
GO

--Relação
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo]  WITH CHECK ADD  CONSTRAINT [FK_tabCdRelEmpresaGrupo_tabCdEmpresaGrupo] FOREIGN KEY([codEmpresaGrupo])
REFERENCES [dbo].[tabCdEmpresaGrupo] ([codEmpresaGrupo])
GO
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo] CHECK CONSTRAINT [FK_tabCdRelEmpresaGrupo_tabCdEmpresaGrupo]
GO

--Constraint para garantir que a combinação dos campos codEmpresa e codEmpresaGrupo seja única
ALTER TABLE [dbo].[tabCdRelEmpresaGrupo] ADD CONSTRAINT [CKC_tabCdRelEmpresaGrupoUnique] UNIQUE(codEmpresa, codEmpresaGrupo);

go

--Insere registros de exemplo para empresas
insert into tabCdEmpresa (Descricao)
values ('SP 01')
insert into tabCdEmpresa (Descricao)
values ('SP 02')
insert into tabCdEmpresa (Descricao)
values ('RJ 01')
insert into tabCdEmpresa (Descricao)
values ('RJ 02')
insert into tabCdEmpresa (Descricao)
values ('RJ 03')

--Insere registros de exemplo para tabCdEmpresaGrupo
insert into tabCdEmpresaGrupo (Descricao)
values ('Filiais São Paulo')
insert into tabCdEmpresaGrupo (Descricao)
values ('Filiais Rio de Janeiro')

--insere registros de exemplo para tabCdRelEmpresaGrupo
insert into tabCdRelEmpresaGrupo (codEmpresa, codEmpresaGrupo)
values(1, 1)
insert into tabCdRelEmpresaGrupo (codEmpresa, codEmpresaGrupo)
values(2, 1)
insert into tabCdRelEmpresaGrupo (codEmpresa, codEmpresaGrupo)
values(3, 2)
insert into tabCdRelEmpresaGrupo (codEmpresa, codEmpresaGrupo)
values(4, 2)
insert into tabCdRelEmpresaGrupo (codEmpresa, codEmpresaGrupo)
values(5, 2)

--Select com join entre as tabelas envolvidas
select G.Descricao as Grupo,
	   E.Descricao as Empresa,
	   R.dta as DtaInclusao
from tabCdRelEmpresaGrupo R
join tabCdEmpresa E
  on (    E.codEmpresa = R.codEmpresa
      and E.Deleted = 0)
join tabCdEmpresaGrupo G
  on (    G.codEmpresaGrupo = R.codEmpresaGrupo
      and G.Deleted = 0)

Fico à disposição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.