Relationship table query N: N

1

How do I display all projects that have a specific advisor?

The relationship between Advisor and Project is N:N , so it contains the Projeto_has_Orientador table as the 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)

Inquiry:

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))
    
asked by anonymous 10.10.2015 / 05:41

1 answer

2

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 download more query information using the JOIN .

    
10.10.2015 / 05:57