Query in relationship table N:N

Asked

Viewed 3,358 times

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))

1 answer

3


Try this way:

SELECT O.NOME, P.TITULO, FROM Orientador AS O
INNER JOIN Projeto_has_Orientador AS P ON (P.idOrientador = O.idOrientador)
WHERE P.idOrientador = <id do orientador>

Here you can get more query information using JOIN.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.