Principales respuestas
Necesito ayuda con un ejercicio de sql

Pregunta
-
Hola buenas necesito ayuda con unas consultas que tengo que hacer creando tablas temporales y no consigo hacerlo. Abajo os pongo las tablas creadas y la consulta que tengo que hacer
.print 'Creando tablas.'
drop table if exists registrados;
drop table if exists socios;
drop table if exists sesiones;
drop table if exists aulas;
drop table if exists charlas;
drop table if exists pagos;
drop table if exists asistentes;
create table registrados(
nombre varchar(50),
universidad varchar(100),
nacionalidad varchar(30),
email varchar(30),
primary key(email)
);
create table socios(
email varchar(30) primary key,
sociedad varchar(20) check ((sociedad = 'española') or (sociedad = 'brasileña')),
foreign key (email) references registrados(email)
);
create table sesiones(
nombre varchar(50),
numero integer check (numero in (1,2)),
organizador varchar(30),
foreign key (organizador) references registrados(email)
);
create table aulas(
codigo integer primary key not null check(codigo in (1,2)),
capacidad integer
);
create table charlas(
titulo varchar(40),
numero_sesion_especial integer check(numero_sesion_especial in (1,2,3,4)),
hora_inicio integer,
hora_fin integer,
codigo_aula integer check (codigo_aula in (1,2)),
foreign key (titulo) references sesiones(nombre),
foreign key (codigo_aula) references aulas(codigo),
foreign key (numero_sesion_especial) references sesiones(numero)
);
create table pagos(
email varchar(30) primary key,
precio integer,
forma_pago varchar(20) check (forma_pago in ('transferencia','paypal','tarjeta bancaria')),
foreign key (email) references registrados(email)
);
create table asistentes(
email varchar(30) primary key,
titulo_charla varchar(40),
foreign key (titulo_charla) references charlas(titulo),
foreign key (email) references registrados(email)
);
.print 'Tablas creadas.'.print 'Consulta1 y 2'
.print 'Nacionalidades que han supuesto más dinero por pagos.'
.print 'Capacidades de las aulas con mayor número de asistentes que hayan pagado con trasferencia.'
Respuestas
-
Hola dul97:
Además de lo que te ha indicado Alberto, si lo quieres aplicar en TSql
create table charlas( titulo varchar(40), numero_sesion_especial integer check(numero_sesion_especial in (1,2,3,4)), hora_inicio integer, hora_fin integer, codigo_aula integer check (codigo_aula in (1,2)), foreign key (titulo) references sesiones(nombre), foreign key (codigo_aula) references aulas(codigo), foreign key (numero_sesion_especial) references sesiones(numero) );
No se puede aplicar una foreign key a una columna de una tabla que no es clave principal ni candidata.
Mens. 1776, Nivel 16, Estado 0, Línea 29
create table asistentes( email varchar(30) primary key, titulo_charla varchar(40), foreign key (titulo_charla) references charlas(titulo), foreign key (email) references registrados(email) );
Mismo prinicipio.
Creacion de foreign keys
En cuanto a lo que solicitas:
Select
https://docs.microsoft.com/es-es/sql/t-sql/queries/select-transact-sql?view=sql-server-2017
Count
https://docs.microsoft.com/es-es/sql/t-sql/functions/count-transact-sql?view=sql-server-2017
Count | Group by
https://www.dofactory.com/sql/group-by
Creo que con estos enlaces, hay bastante información para resolver tus ejercicios.
- Propuesto como respuesta Pablo RubioModerator viernes, 11 de enero de 2019 17:44
- Marcado como respuesta Pablo RubioModerator miércoles, 16 de enero de 2019 23:01
Todas las respuestas
-
Pusiste la pregunta en el foro de SQL Server, pero me temo que el código que has mostrado no es de SQL Server. Tiene cosas tales como ".print" y "drop table if exists" que en SQL Server no existen. Tu código debe de ser para algún otro motor de base de datos. Sugiero poner la pregunta en algún foro que se corresponda con la base de datos que estás usando.
- Editado Alberto PoblacionMVP viernes, 11 de enero de 2019 15:32
- Propuesto como respuesta Pedro Alfaro viernes, 11 de enero de 2019 16:05
-
Deleted
- Propuesto como respuesta Pablo RubioModerator viernes, 11 de enero de 2019 17:44
-
-
Hola dul97:
Además de lo que te ha indicado Alberto, si lo quieres aplicar en TSql
create table charlas( titulo varchar(40), numero_sesion_especial integer check(numero_sesion_especial in (1,2,3,4)), hora_inicio integer, hora_fin integer, codigo_aula integer check (codigo_aula in (1,2)), foreign key (titulo) references sesiones(nombre), foreign key (codigo_aula) references aulas(codigo), foreign key (numero_sesion_especial) references sesiones(numero) );
No se puede aplicar una foreign key a una columna de una tabla que no es clave principal ni candidata.
Mens. 1776, Nivel 16, Estado 0, Línea 29
create table asistentes( email varchar(30) primary key, titulo_charla varchar(40), foreign key (titulo_charla) references charlas(titulo), foreign key (email) references registrados(email) );
Mismo prinicipio.
Creacion de foreign keys
En cuanto a lo que solicitas:
Select
https://docs.microsoft.com/es-es/sql/t-sql/queries/select-transact-sql?view=sql-server-2017
Count
https://docs.microsoft.com/es-es/sql/t-sql/functions/count-transact-sql?view=sql-server-2017
Count | Group by
https://www.dofactory.com/sql/group-by
Creo que con estos enlaces, hay bastante información para resolver tus ejercicios.
- Propuesto como respuesta Pablo RubioModerator viernes, 11 de enero de 2019 17:44
- Marcado como respuesta Pablo RubioModerator miércoles, 16 de enero de 2019 23:01