I'm having trouble performing a JOIN on tables so the problem is this:
In a bulletin board system, I have users, including students, school officials, and school employees. I need to generate an SQL statement that, when informing the CPF of the person (s), will list all the students related to the CPF of those responsible (s).
Follow the template:
Isthisthebestwaytoimplementthis"Generalization" and this relationship between those responsible and the students, since they are all users? Can anyone help me?
SQL code:
-- -----------------------------------------------------
-- Table 'testeboletim'.'tipo_usuario'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'testeboletim'.'tipo_usuario' (
'idtipo_usuario' INT NOT NULL AUTO_INCREMENT,
'funcao' VARCHAR(45) NULL,
PRIMARY KEY ('idtipo_usuario'))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table 'testeboletim'.'usuario'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'testeboletim'.'usuario' (
'idusuario' INT NOT NULL AUTO_INCREMENT,
'nome' VARCHAR(45) NULL,
'cpf' VARCHAR(20) NULL,
'data_nasc' DATE NULL,
'telefone' VARCHAR(20) NULL,
'celular' VARCHAR(20) NULL,
'email' VARCHAR(45) NULL,
'tipo_usuario_idtipo_usuario' INT NOT NULL,
PRIMARY KEY ('idusuario', 'tipo_usuario_idtipo_usuario'),
INDEX 'fk_usuario_tipo_usuario_idx' ('tipo_usuario_idtipo_usuario' ASC),
CONSTRAINT 'fk_usuario_tipo_usuario'
FOREIGN KEY ('tipo_usuario_idtipo_usuario')
REFERENCES 'testeboletim'.'tipo_usuario' ('idtipo_usuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table 'testeboletim'.'aluno'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'testeboletim'.'aluno' (
'idaluno' INT NOT NULL AUTO_INCREMENT,
'usuario_idusuario' INT NOT NULL,
'usuario_tipo_usuario_idtipo_usuario' INT NOT NULL,
PRIMARY KEY ('idaluno', 'usuario_idusuario', 'usuario_tipo_usuario_idtipo_usuario'),
INDEX 'fk_aluno_usuario1_idx' ('usuario_idusuario' ASC, 'usuario_tipo_usuario_idtipo_usuario' ASC),
CONSTRAINT 'fk_aluno_usuario1'
FOREIGN KEY ('usuario_idusuario' , 'usuario_tipo_usuario_idtipo_usuario')
REFERENCES 'testeboletim'.'usuario' ('idusuario' , 'tipo_usuario_idtipo_usuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table 'testeboletim'.'responsavel'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'testeboletim'.'responsavel' (
'idresponsavel' INT NOT NULL AUTO_INCREMENT,
'usuario_idusuario' INT NOT NULL,
'usuario_tipo_usuario_idtipo_usuario' INT NOT NULL,
PRIMARY KEY ('idresponsavel', 'usuario_idusuario', 'usuario_tipo_usuario_idtipo_usuario'),
INDEX 'fk_responsavel_usuario1_idx' ('usuario_idusuario' ASC, 'usuario_tipo_usuario_idtipo_usuario' ASC),
CONSTRAINT 'fk_responsavel_usuario1'
FOREIGN KEY ('usuario_idusuario' , 'usuario_tipo_usuario_idtipo_usuario')
REFERENCES 'testeboletim'.'usuario' ('idusuario' , 'tipo_usuario_idtipo_usuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table 'testeboletim'.'aluno_has_responsavel'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'testeboletim'.'aluno_has_responsavel' (
'aluno_idaluno' INT NOT NULL,
'aluno_usuario_idusuario' INT NOT NULL,
'responsavel_idresponsavel' INT NOT NULL,
'responsavel_usuario_idusuario' INT NOT NULL,
PRIMARY KEY ('aluno_idaluno', 'aluno_usuario_idusuario', 'responsavel_idresponsavel', 'responsavel_usuario_idusuario'),
INDEX 'fk_aluno_has_responsavel_responsavel1_idx' ('responsavel_idresponsavel' ASC, 'responsavel_usuario_idusuario' ASC),
INDEX 'fk_aluno_has_responsavel_aluno1_idx' ('aluno_idaluno' ASC, 'aluno_usuario_idusuario' ASC),
CONSTRAINT 'fk_aluno_has_responsavel_aluno1'
FOREIGN KEY ('aluno_idaluno' , 'aluno_usuario_idusuario')
REFERENCES 'testeboletim'.'aluno' ('idaluno' , 'usuario_idusuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT 'fk_aluno_has_responsavel_responsavel1'
FOREIGN KEY ('responsavel_idresponsavel' , 'responsavel_usuario_idusuario')
REFERENCES 'testeboletim'.'responsavel' ('idresponsavel' , 'usuario_idusuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;