I have this database model
I want to make a query that meets the following conditions.
I have already tried in different ways but I always get all the characterizations that the student has and I want to see only the type of characterization with the semester of highest order for each student.
example:
I'm doing this consultation
select e.nombre, c.id, s.nombre as "semestre", s.orden, t.nombre as "tipo"
from estudiante e, caracterizacion c, tipo t, semestre s
where e.id=c.estudiante_id and t.id=c.tipo_id and s.id=c.semestre_id
and it is giving me the following results:
but I want only the following results to come out:
Those that are enclosed in red are those that I want to give me as a result and correspond to the semester of higher order of the characterizations of each student.
I hope you can help me, annex code for generating the database:
CREATE TABLE "Estudiantes" (
"id" serial NOT NULL,
"nombre" varchar NOT NULL,
"tipo_documento" varchar NOT NULL,
"documento" varchar NOT NULL,
"celular" varchar NOT NULL,
"telefono" varchar NOT NULL,
"genero" integer NOT NULL,
"fecha_nac" varchar NOT NULL,
"email" varchar NOT NULL,
"direccion" varchar NOT NULL,
"foto" BINARY NOT NULL,
"programa" integer NOT NULL,
"Estado" integer NOT NULL,
"Created" VARCHAR(255) NOT NULL,
CONSTRAINT Estudiantes_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Programas" (
"id" serial NOT NULL,
"nombre" varchar NOT NULL,
"duracion_semestres" integer NOT NULL,
"snies" varchar NOT NULL,
"Franja" VARCHAR(255) NOT NULL,
CONSTRAINT Programas_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Semestres" (
"id" serial NOT NULL,
"semestre" varchar NOT NULL,
"orden" integer NOT NULL,
CONSTRAINT Semestres_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Caracterizaciones" (
"id" serial NOT NULL,
"estudiante" integer NOT NULL,
"descripcion" varchar NOT NULL,
"semestre" integer NOT NULL,
"Nivelado" integer NOT NULL,
"tipo" integer NOT NULL,
"usuario" integer NOT NULL,
"Created " VARCHAR(255) NOT NULL,
CONSTRAINT Caracterizaciones_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Tipos_caracterizaciones" (
"id" serial NOT NULL,
"nombre" serial NOT NULL,
"default" BOOLEAN NOT NULL,
CONSTRAINT Tipos_caracterizaciones_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Users" (
"id" serial NOT NULL,
"user_name" varchar NOT NULL UNIQUE,
"nombre" varchar NOT NULL,
"apellido" VARCHAR(255) NOT NULL,
"password" varchar NOT NULL,
"email" varchar NOT NULL,
"grupo" integer NOT NULL,
CONSTRAINT Users_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Grupos" (
"id" serial NOT NULL,
"nombre" varchar NOT NULL,
CONSTRAINT Grupos_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
CREATE TABLE "Genero" (
"id" serial NOT NULL,
"nombre" VARCHAR(255) NOT NULL,
CONSTRAINT Genero_pk PRIMARY KEY ("id")
) WITH (
OIDS=FALSE
);
ALTER TABLE "Estudiantes" ADD CONSTRAINT "Estudiantes_fk0" FOREIGN KEY ("genero") REFERENCES "Genero"("id");
ALTER TABLE "Estudiantes" ADD CONSTRAINT "Estudiantes_fk1" FOREIGN KEY ("programa") REFERENCES "Programas"("id");
ALTER TABLE "Caracterizaciones" ADD CONSTRAINT "Caracterizaciones_fk0" FOREIGN KEY ("estudiante") REFERENCES "Estudiantes"("id");
ALTER TABLE "Caracterizaciones" ADD CONSTRAINT "Caracterizaciones_fk1" FOREIGN KEY ("semestre") REFERENCES "Semestres"("id");
ALTER TABLE "Caracterizaciones" ADD CONSTRAINT "Caracterizaciones_fk2" FOREIGN KEY ("tipo") REFERENCES "Tipos_caracterizaciones"("id");
ALTER TABLE "Caracterizaciones" ADD CONSTRAINT "Caracterizaciones_fk3" FOREIGN KEY ("usuario") REFERENCES "Users"("id");
ALTER TABLE "Users" ADD CONSTRAINT "Users_fk0" FOREIGN KEY ("grupo") REFERENCES "Grupos"("id");