Ir para conteúdo

POWERED BY:

Arquivado

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

Michael.Dev

Problema Select

Recommended Posts

Galerinha, estou com um problema que estou com dificuldades para resolver. Tenho as seguintes tabelas no meu BD:

 

----- FormularioUsuario ---- Relacionada á <-- N:1 Formulario e Usuario

 

 

CREATE TABLE [dbo].[tb_Formulario_Usuario](
[iD_FORMULARIO] [int] NOT NULL,
[iD_USUARIO] [int] NOT NULL,
[VISUALIZAR] [bit] NULL,
[iNSERIR] [bit] NULL,
[ALTERAR] [bit] NULL,
[EXCLUIR] [bit] NULL
) ON [PRIMARY]

 

e as demais tabelas:

 

CREATE TABLE [dbo].[tb_Usuarios](
[iD_USUARIO] [int] IDENTITY(1,1) NOT NULL,
[iD_PESSOA] [int] NOT NULL,
[uSUARIO] [nvarchar](10) NOT NULL,
[sENHA] [nvarchar](8) NOT NULL,
[DT_HR_ATUALIZACAO] [datetime] NOT NULL,
[TIPO_OPERACAO] [varchar](15) NOT NULL,
[sITUACAO] [nvarchar](20) NULL,
[sTATUS] [bit] NOT NULL,
CONSTRAINT [PK_tb_Usuarios] PRIMARY KEY CLUSTERED 
(
[iD_USUARIO] 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

 

-----------------------------------------------------------------------------------------------------

 

CREATE TABLE [dbo].[tb_Formularios](
[iD_FORMULARIO] [int] IDENTITY(1,1) NOT NULL,
[iD_EMPRESA] [int] NULL,
[LINK] [nvarchar](50) NULL,
[DESCRICAO] [nvarchar](100) NULL,
[DT_HR_ATUALIZACAO] [datetime] NULL,
[TIPO_OPERACAO] [varchar](50) NULL,
[sTATUS] [nchar](10) NULL,
CONSTRAINT [PK_tb_Formularios] PRIMARY KEY CLUSTERED 
(
[iD_FORMULARIO] 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

 

---------------------------------------------------------------------------------------------

Como vocês estão vendo, tenho minhas três tabelas, a tabela Usuario e Formulario estao relacionadas como 1:N.

 

O Problema é o seguinte, tenho minha tabela FormularioUsuario onde tenho o ID do USUARIO e o ID do FORMULARIO e os CAMPOS VISUALIZAR, INSERIR, ALTERAR, EXCLUIR, que são as permissoes que o usuario terá entre os formulários, só que na hora de ALTERAR as PERMISSOES de um USUARIO eu PRECISO trazer todos os FORMULARIOS e OS QUE O ESTAO CADASTRADO COM PERMISSAO PARA O USUARIO....

 

 

EXEMPLO SEM SUCESSO DE MINHA PROCEDURE PARA REALIZAR ESTA OPERAÇÂO:

 

ALTER PROCEDURE [dbo].[sPObterFormularioPorModulo]
(
  @IDMODULO INT,
  @IDUSUARIO INT
)
AS
BEGIN
SELECT 
      tbForm.ID_FORMULARIO,
      tbForm.DESCRICAO,
      tbForm.LINK,
      tbFU.INSERIR,
      tbFU.VISUALIZAR,
      tbFU.ALTERAR,
      tbFU.EXCLUIR
    FROM tb_Formularios as tbForm
    INNER JOIN tb_Modulo_Formulario as tbMF ON tbForm.ID_FORMULARIO = tbMF.ID_FORMULARIO
    INNER JOIN tb_Formulario_Usuario as tbFU ON tbForm.ID_FORMULARIO = tbFU.ID_FORMULARIO
    WHERE tbMF.ID_MODULO = @IDMODULO
       AND tbFU.ID_USUARIO = @IDUSUARIO
END

Compartilhar este post


Link para o post
Compartilhar em outros sites

...
INNER JOIN tb_Formulario_Usuario as tbFU ON tbForm.ID_FORMULARIO = tbFU.ID_FORMULARIO and
                                           tbForm.ID_USUARIO = tbFU.ID_USUARIO
...

 

Creio que isto resolva, "fecha" o join.

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.