Ir para conteúdo

Arquivado

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

Valdomiro Bezerra

chave estrangeira

Recommended Posts

pessoal tenho duas tabelas

 

CADASTRO_ALUNOS

CODIGO_ALUNO

CODIGO_USUARIO

NOME

SEXO

IDADE

ENDERECO

 

 

 

 

 

USUARIOS

CODIGO_USUARIOS

USUARIO

EMAIL

SENHA

 

TENHO UMA CHAVE ESTRANGEIRA SE RELACIONANDO COM A TABELA CADASTRO_ALUNO

SO QUE QUANDO VOU AO BANCO SO APARECE O CODIGO DO ALUNO E O E O CODIGO DO USUARIO ESTA NULO QUERO QUE APAREÇA O CODIGO DO ALUNO E CODIGO USUARIO.

O QUE FAÇO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

TENHO UMA CHAVE ESTRANGEIRA SE RELACIONANDO COM A TABELA CADASTRO_ALUNO

SO QUE QUANDO VOU AO BANCO SO APARECE O CODIGO DO ALUNO E O E O CODIGO DO USUARIO ESTA NULO QUERO QUE APAREÇA O CODIGO DO ALUNO E CODIGO USUARIO.

O QUE FAÇO.

Como esta montando a consulta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo assim eu tenho uma tabela de Usuario e outra de Cadastro alunos eu quero que quando um Usuario cadastrar um aluno

na tabela cadastro_alunos apareça além dos dados do aluno o codigo do usuario e o usuario que é o nome de quem efetuo o cadastro.

como faço isso não estou sabendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo assim eu tenho uma tabela de Usuario e outra de Cadastro alunos eu quero que quando um Usuario cadastrar um aluno

na tabela cadastro_alunos apareça além dos dados do aluno o codigo do usuario e o usuario que é o nome de quem efetuo o cadastro.

como faço isso não estou sabendo.

Isso tem que ser feito via aplicação... qm esta programando a tela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Valdomiro.

Vou tentar ajudá-lo.

 

Abaixo, tabelas que utilizei para montar uma procedure que insere/atualiza um aluno:

CREATE TABLE dbo.tabCdUsuario (
	codUsuario INT IDENTITY(1, 1) PRIMARY KEY,
	Usuario VARCHAR(20) NULL,
	senha VARCHAR(255) NULL,
	email VARCHAR(255) NULL
	)
	--GO
	--insert into tabCdUsuario (Usuario, senha, email)
	--values ('admin', '123456', 'admin@admin.com')
GO

CREATE TABLE dbo.tabCdAluno (
	codAluno INT IDENTITY(1, 1) PRIMARY KEY,
	Nome VARCHAR(255) NULL,
	indSexo CHAR(1) NULL,
	dtaNascimento DATETIME NULL,
	Endereco VARCHAR(1000) NULL,
	codUsuarioCad INT NULL,
	dtaCad DATETIME NULL
	)
GO

ALTER TABLE dbo.tabCdAluno
	WITH CHECK ADD CONSTRAINT FK_tabCdAluno_tabCdUsuario FOREIGN KEY (codUsuarioCad) REFERENCES dbo.tabCdUsuario(codUsuario)
GO

ALTER TABLE dbo.tabCdAluno CHECK CONSTRAINT FK_tabCdAluno_tabCdUsuario
GO

ALTER TABLE dbo.tabCdAluno ADD CONSTRAINT DF_tabCdAluno_dtaCad DEFAULT(getdate())
FOR dtaCad

Agora, uma procedure que realiza a inserção do aluno no banco:

CREATE PROCEDURE sprCdAluno @codAluno INT = 0,
	@Nome			VARCHAR(255),
	@indSexo		CHAR(01),
	@dtaNascimento	DATETIME,
	@endereco		VARCHAR(1000),
	@codUsuario		INT,
	@codAlunoOut	INT OUTPUT
AS
BEGIN

	--VERIFICA SE O USUÁRIO INFORMADO É VÁLIDO
	IF NOT EXISTS (
			SELECT 1
			FROM tabCdUsuario
			WHERE codUsuario = @codUsuario
			)
	BEGIN
		RAISERROR (
				'Usuário inválido!',
				15,
				15
				)

		RETURN
	END
	ELSE
	BEGIN
		--VERIFICA SE FOI INFORMADO UM ALUNO PARA REALIZAR A ATUALIZAÇÃO DO REGISTRO
		IF isnull(@codAluno, 0) > 0
		BEGIN
			--VERIFICA SE O ALUNO INFORMADO É VÁLIDO
			IF NOT EXISTS (
					SELECT 1
					FROM tabCdAluno
					WHERE codAluno = @codAluno
					)
			BEGIN
				RAISERROR (
						'Parametro codAluno informado é inválido',
						15,
						15
						)

				RETURN
			END

			--ATUALIZA REGISTRO
			UPDATE tabCdAluno
			SET Nome = @Nome,
				indSexo = UPPER(@indSexo),
				dtaNascimento = @dtaNascimento,
				Endereco = @endereco,
				codUsuarioCad = @codUsuario,
				dtaCad = GETDATE()
			WHERE codAluno = @codAluno

			--SETA A VARIAVEL DE RETORNO COM O codAluno INFORMADO
			SET @codAlunoOut = @codAluno
		END
		ELSE
		BEGIN
			--INSERE UM NOVO ALUNO
			INSERT INTO tabCdAluno (
				Nome,
				indSexo,
				dtaNascimento,
				Endereco,
				codUsuarioCad
				)
			VALUES (
				@Nome,
				UPPER(@indSexo),
				@dtaNascimento,
				@endereco,
				@codUsuario
				)

			--SETA A VARIAVEL DE RETORNO COM O codAluno GERADO
			SELECT @codAlunoOut = MAX(codAluno)
			FROM tabCdAluno
		END
	END
END

Caso não informe (0) um codAluno, a rotina entende que é um novo cadastro e realiza um insert, caso seja informado o parâmetro codAluno, então o registro é atualizado.

 

Para utiliza-la em sua aplicação, basta realizar a chamada e tratar o retorno:

DECLARE @codAluno INT

EXEC sprCdAluno 1,
	'João Silva',
	'M',
	'19450110',
	'Av. Getulio Vargas',
	1,
	@codAluno OUTPUT

SELECT @codAluno AS codAluno

Fico à disposição

Compartilhar este post


Link para o post
Compartilhar em outros sites

Select:

SELECT A.Nome AS Aluno,
	   U.Usuario AS Usuario
FROM tabCdAluno A
JOIN tabCdUsuario U
	ON (U.codUsuario = A.codUsuarioCad)

Retorno:

 

Aluno Usuario
João Silva admin

 

Fico à disposição

Compartilhar este post


Link para o post
Compartilhar em outros sites

ALTER TABLE dbo.tabCdAluno
WITH CHECK ADD CONSTRAINT FK_tabCdAluno_tabCdUsuario FOREIGN KEY (codUsuarioCad) REFERENCES dbo.tabCdUsuario(codUsuario)

coloquei a chave estrangeira mas só que o codigo do usuario está aparecendo nulo não deveria aparece já que estou fazendo referencia a tabela usuario.

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.