Preciso fazer o relacionamento em sql das 03 tabelas abaixo,mas na hora de inserir o join o sistema sempre traz erro:
segue o código que gerei:
Create Table Aluno(
Nr_Rgm number(8),
Nm_Nome varchar(40),
CONSTRAINT Rgm_pk PRIMARY KEY (Nr_Rgm)
);
Create Table Matricula(
Nr_Rgm number(8) ,
Cd_Classe number(8) ,
Dt_Matricula date,
CONSTRAINT fk_Rgm,
FOREIGN KEY (Nr_Rgm)
REFERENCES Aluno(Nr_Rgm)
CONSTRAINT fk_classe,
FOREIGN KEY (Cd_Classe)
REFERENCES Classe(Cd_Classe)
CONSTRAINT MATRICULA_pk PRIMARY KEY(Nr_Rgm,Cd_Classe)
constraint fk_matricula,
foreign key(Dt_matricula)
references matricula(dt_matricula)
);
Create Table Classe (
Cd_Classe Number (8),
Nr_AnoLetivo Number (4),
Nr_Serie number(2),
Sg_Turma varchar2 (2),
Cd_Escola Number (2),
Cd_Grau Number (2),
Cd_Periodo number(2),
CONSTRAINT FK_Classe_Classe_Cd_Classe FOREIGN KEY(Cd_Classe)
REFERENCES Aluno(Nr_Rgm)
);
Tentei inserir este código mas não deu certo:
select Table Aluno.Nr_Rgm,Table_Classe.Cd_Classe,Table
from Table Matricula
inner join Table aluno,Table Classe
on Table_Aluno.Nr_rgm,Table Classe=Table matricula.Nr_Rgm,Cd_Classe;
Legal você postar a estrutura da tabela e o comando que você usou, mas esqueceu de postar o mais importante: a mensagem de erro que o sistema dá.
No seu caso, dá pra ver o problema no seu select, mas geralmente é mais dificil do que isso.
Eu tentei rescrever seu select mas nao sei se consegui entender o relacionamento entre as tabelas, baseado nas suas foreign keys. Eu assumi que uma matrícula referencia um aluno (via nr_rgm) e uma classe (via cd_classe). O select entao ficaria assim:
SELECT aluno.nr_rgm, classe.cd_classe
FROM matricula
INNER JOIN aluno ON matricula.nr_rgm = aluno.nr_rgm
INNER JOIN classe ON matricula.cd_classe = classe.cd_classe
Acho que sua confusao foi tentar colocar toda a parte INNER JOIN junto (para ambas tabelas) e depois todas as partes ON. Você tem que fazer toda a sequencia INNER JOIN ON para cada tabela, uma por vez.
Entendi,só uma duvida estou fazendo pelo sqlite,neste caso não deveria trazer abaixo as 03 tabelas ?Pergunto isso pq quando fiz a tabela aluno e Classe,e executei trouxe a tabela bonitinha com os atributos.
Ou neste caso não vai aparecer mesmo.
Acho que por aqui não consigo mandar imagens ,mas se quiser posso mandar por e-mail.
O resultado vai depender do que você coloca na parte SELECT.
No meu exemplo eu mandei listar apenas aluno.nr_rmg e classe.cd_classe por isso o resultado nao trouxe tudo.
Se colocar SELECT * FROM, ao invés de listar alguns campos, ele trará todos os campos de todas as tabelas envolvidas.
Bom coloquei assim :
SELECT * from matricula
INNER JOIN aluno ON matricula.nr_rgm = aluno.nr_rgm
INNER JOIN classe ON matricula.cd_classe = classe.cd_classe
E no sqlite apareceu a barra verde quando fui visualizar a execução ficou assim,ficou muito bom,muito,muito,muito obrigado
electid order from detail
0
0
0
SCAN TABLE matricula
0
1
1
SEARCH TABLE aluno USING INDEX sqlite_autoindex_Aluno_1 (Nr_Rgm=?)
0
2
2
SEARCH TABLE classe USING AUTOMATIC COVERING INDEX (Cd_Classe=?)