2
How to display all projects that have a specific advisor?
The relationship between Supervisor and Project is N:N
, therefore contains the table Projeto_has_Orientador
as relationship table.
Tables:
CREATE TABLE IF NOT EXISTS Orientador (
idOrientador INT NOT NULL AUTO_INCREMENT,
Nome VARCHAR(100) NOT NULL,
Email VARCHAR(45) NOT NULL,
CPF VARCHAR(45) NOT NULL,
PRIMARY KEY (idOrientador))
CREATE TABLE IF NOT EXISTS Projeto (
id INT NOT NULL AUTO_INCREMENT,
Titulo VARCHAR(255) NOT NULL,
PRIMARY KEY (id))
CREATE TABLE IF NOT EXISTS Projeto_has_Orientador (
Projeto_id INT NOT NULL,
Orientador_idOrientador INT NOT NULL,
TipoOrientador INT NOT NULL,
PRIMARY KEY (Projeto_id, Orientador_idOrientador),
FOREIGN KEY (Projeto_id)
REFERENCES Projeto (id)
FOREIGN KEY (Orientador_idOrientador)
REFERENCES Orientador (idOrientador)
Consultation:
SELECT projeto.id as id, orientador.Nome as orientador,
FROM projeto
INNER JOIN orientador ON (orientador.idOrientador = (select P.Orientador_idOrientador from projeto_has_orientador as P where P.Projeto_id = projeto.id AND P.Tipo_Orientador = 1))