112 - Variables de usuario |
Un profesor almacena el documento y nombre de sus alumnos en una tabla llamada "alumnos" y en otra tabla llamada "notas" almacena las notas de los mismos. 1- Elimine las tablas, si existen: if object_id('alumnos') is not null drop table alumnos; if object_id('notas') is not null drop table notas; 2- Créelas con los campos necesarios. Agregue una restricción "primary key" para el campo "documento" y una restricción "foreign key" para que en la tabla "notas" el documento del alumno haga referencia al documento de la tabla "alumnos": create table alumnos( documento char(8) not null constraint CK_alumnos_documento check (documento like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), nombre varchar(30), constraint PK_alumnos primary key(documento) ); create table notas( documento char(8) not null, nota decimal(4,2) constraint CK_notas_nota check (nota between 0 and 10), constraint FK_notas_documento foreign key(documento) references alumnos(documento) on update cascade ); 3- Ingrese algunos registros: insert into alumnos values('30111111','Ana Algarbe'); insert into alumnos values('30222222','Bernardo Bustamante'); insert into alumnos values('30333333','Carolina Conte'); insert into alumnos values('30444444','Diana Dominguez'); insert into alumnos values('30555555','Fabian Fuentes'); insert into alumnos values('30666666','Gaston Gonzalez'); insert into notas values('30111111',5.1); insert into notas values('30222222',7.8); insert into notas values('30333333',4); insert into notas values('30444444',2.5); insert into notas values('30666666',9.9); insert into notas values('30111111',7.3); insert into notas values('30222222',8.9); insert into notas values('30444444',6); insert into notas values('30666666',8); 4- Declare una variable llamada "@documento" de tipo "char(8)" y vea su contenido: declare @documento char(8) select @documento; 5- Intente usar la variable "@documento" para almacenar el documento del alumno con la nota más alta: select @documento= documento from notas where nota=(select max(nota) from notas); No se puede porque la variable fue declarada en otro lote de sentencias y no es reconocida. 6- Declare una variable llamada "@documento" de tipo "char(8)" y almacene en ella el documento del alumno con la nota más alta, luego recupere el nombre del alumno: declare @documento char(8) select @documento= documento from notas where nota=(select max(nota) from notas) select nombre from alumnos where documento=@documento;Ver solución
if object_id('alumnos') is not null drop table alumnos; if object_id('notas') is not null drop table notas; create table alumnos( documento char(8) not null constraint CK_alumnos_documento check (documento like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), nombre varchar(30), constraint PK_alumnos primary key(documento) ); create table notas( documento char(8) not null, nota decimal(4,2) constraint CK_notas_nota check (nota between 0 and 10), constraint FK_notas_documento foreign key(documento) references alumnos(documento) on update cascade ); insert into alumnos values('30111111','Ana Algarbe'); insert into alumnos values('30222222','Bernardo Bustamante'); insert into alumnos values('30333333','Carolina Conte'); insert into alumnos values('30444444','Diana Dominguez'); insert into alumnos values('30555555','Fabian Fuentes'); insert into alumnos values('30666666','Gaston Gonzalez'); insert into notas values('30111111',5.1); insert into notas values('30222222',7.8); insert into notas values('30333333',4); insert into notas values('30444444',2.5); insert into notas values('30666666',9.9); insert into notas values('30111111',7.3); insert into notas values('30222222',8.9); insert into notas values('30444444',6); insert into notas values('30666666',8); declare @documento char(8) select @documento; select @documento= documento from notas where nota=(select max(nota) from notas); declare @documento char(8) select @documento= documento from notas where nota=(select max(nota) from notas) select nombre from alumnos where documento=@documento;