鉴于以下数据模式和最少的数据记录,我需要制定一个查询以显示学习两个以上学科的学生。
SQL SERVER中的表
create table Estudiante
(
id int primary key not null,
nombre varchar(50)
)
insert into Estudiante (id, nombre)
values
('1','Maria'),
('2','Juan'),
('3','Yarlin'),
('4','Ana'),
('5','Marcos'),
('6','Juana'),
('7','Esther'),
('8','Luisa')
create table Materia
(
id int primary key not null,
nombre varchar(50),
estado varchar(10)
)
insert into Materia (id, nombre, estado)
values
('1','Filosofía','activo'),
('2','Bases de datos','activo'),
('3','Programación','activo'),
('4','Literatura','activo'),
('5','Teología','activo')
create table MateriaProfesor
(
id int primary key not null,
idMateria int foreign key references Materia,
idProfesor int foreign key references Profesor
)
insert into MateriaProfesor (id, idMateria, idProfesor)
values
('11','2','1'),
('12','1','2'),
('13','2','1'),
('14','3','4'),
('15','4','3'),
('16','5','2')
create table MateriaEstudiante
(
id int primary key not null,
idMateria int foreign key references Materia(id),
idEstudiate int foreign key references Estudiante(id),
Fecha date
)
insert into MateriaEstudiante (id, idMateria, idEstudiate, Fecha)
values
('20','4','3','10/11/2017'),
('21','5','2','10/11/2017'),
('22','3','8','10/11/2017'),
('23','5','4','11/11/2017'),
('24','1','5','11/11/2017'),
('25','1','3','11/11/2017')
答案 0 :(得分:0)
尝试逐步分析问题:
GROUP BY
FROM StudentCourses LEFT JOIN Students ON
StudentCourse.StudentID = Students.StudentID
where count(...) > 2
PS。 1.使用英语。 2.想想自己。
答案 1 :(得分:0)
根据您的问题和给定的信息,我提出了此查询。
import java.net.URL;
import java.io.InputStream;
…
InputStream is = new URL("....").openStream(); // will throw here if URL doesn't work
PDDocument doc = PDDocument.load(is); // will throw here if PDF malformed or empty file
…
is.close();
答案 2 :(得分:0)
表定义似乎使用非英语单词。和 因为您还没有翻译哪个表代表什么 实体/操作,所以我将在此处进行猜测 了解表格。我的猜测:
研究者=学生
nombre =名称
材料=主题
estado =状态
MateriaEstudiante = SubjectStudentEnrollment
Fecha =不知道现在是几号,所以忽略它的使用
;WITH CTE AS
(
SELECT E.id
,E.nombre
,SubCount = COUNT(ME.idMateria)
FROM MateriaEstudiante ME
INNER JOIN Estudiante E
ON ME.idEstudiate = E.id
GROUP BY
E.id
,E.nombre
HAVING COUNT(ME.idMateria) > 2
)
SELECT nombre
FROM CTE;
注意:-使用内部联接,因为您需要学生信息,因此MateriaEstudiante中具有NULL StudentId的任何行都与您无关。