none
Relacionamento de tabela com inner join. RRS feed

  • Pergunta

  • Boa noite.

    sou nova em SQL e estou criando o relacionamento de 03 tabelas (ás tabelas são:aluno,matricula e classe)com o inner join porém não está dando certo ,poderiam me ajudar?

    O código que eu criei é este:

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

    "SELECT * FROM Matricula 
    INNER JOIN aluno ,
    ON Nr_Rgm =aluno.Nr_Rgm ,
    INNER JOIN Classe ,
    ON Classe.Cd_Classe =aluno.Nr_Rgm WHERE matricula.Cd= nr_Rgm.

    sábado, 18 de fevereiro de 2017 00:34

Respostas

  • Segue um exemplo simples , para ver

    --#Criação das tabelas

    CREATE TABLE Aluno
    (
     idAluno INT IDENTITY(1,1)  PRIMARY KEY,
     Nome VARCHAR(200) NOT NULL,
     CPF VARCHAR(30) NOT NULL,
     Telefone VARCHAR(30) NOT NULL,
     Email VARCHAR(100) NOT NULL
    )
    
    CREATE TABLE Classes
    (
      IdClasse UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,
      CodClasse INT IDENTITY(1,1),
      NomeClasse VARCHAR(30),
      /*Demais Campos*/
    )
    
    CREATE TABLE Matricula
    (
     idMatricula INT IDENTITY(1,1)  PRIMARY KEY,
     DataMatricula SMALLDATETIME,
     /*Demais Campos*/
    
     /*Associativas*/
     IdAluno INT FOREIGN KEY REFERENCES dbo.Aluno(idAluno),
     IdClasse  UNIQUEIDENTIFIER FOREIGN KEY REFERENCES  dbo.Classes(IdClasse),
     
    )
    

    --#Inserção de dados

    INSERT INTO dbo.Aluno( Nome, CPF, Telefone, Email ) VALUES  ( 'Aluno 1', '000.000.000-00','(61)9999-9999', 'algumacoisa@gmailcom.com' )
    INSERT INTO dbo.Aluno( Nome, CPF, Telefone, Email )VALUES  ( 'Aluno 2', '000.000.000-01', '(61)9999-9998', 'algumacoisa2@gmailcom.com')
    
    INSERT INTO dbo.Classes ( IdClasse, NomeClasse ) VALUES  ( NEWID(),'8ª Serie A'),( NEWID(),'8ª Serie B'),( NEWID(),'8ª Serie C')
    INSERT INTO dbo.Matricula ( DataMatricula, IdAluno, IdClasse ) VALUES  ( GETDATE(), 1, '3F1CFD1E-32B6-43E6-B006-21322E80BB61'),( GETDATE(), 2, '3F1CFD1E-32B6-43E6-B006-21322E80BB61')
    

    --# Select com INNER JOIN

    SELECT * FROM dbo.Matricula AS M
    JOIN dbo.Aluno AS A ON A.idAluno = M.IdAluno
    JOIN dbo.Classes AS C ON C.IdClasse = M.IdClasse

    Por favor,  marque-o como respondidas se está respondeu a sua pergunta 
    ou marcá-lo como útil se está ajudou a resolver o seu problema 
    Wesley Neves
    MTA-Database Fundamentals 
    Analista Desenvolvedor.NET


    Wesley Neves

    segunda-feira, 20 de fevereiro de 2017 11:52

Todas as Respostas

  • Deleted
    • Sugerido como Resposta Rodrigo CdS sábado, 18 de fevereiro de 2017 12:35
    sábado, 18 de fevereiro de 2017 11:29
  • José boa noite.

    em relação a chave primária da tabela matricula resolvi mudar e deixei como FK pois concordo com a sua colocação.

    Tentei o código desta forma e ainda não rodou,estou fazendo pelo sqlite.

    select Nr_Rgm,Cd_Classe
    from Matricula
     inner join Aluno as A on A.Nr_Rgm = M.Nr_Rgm
          where Cd_Classe.matricula=matricula.Classe_cd_Classe (também da erro)

    Iniciando por SELECT * FROM matricula ele até aceita mas colocando os mesmo a partir do inner join continua errado:

    

    domingo, 19 de fevereiro de 2017 16:33
  • Segue um exemplo simples , para ver

    --#Criação das tabelas

    CREATE TABLE Aluno
    (
     idAluno INT IDENTITY(1,1)  PRIMARY KEY,
     Nome VARCHAR(200) NOT NULL,
     CPF VARCHAR(30) NOT NULL,
     Telefone VARCHAR(30) NOT NULL,
     Email VARCHAR(100) NOT NULL
    )
    
    CREATE TABLE Classes
    (
      IdClasse UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,
      CodClasse INT IDENTITY(1,1),
      NomeClasse VARCHAR(30),
      /*Demais Campos*/
    )
    
    CREATE TABLE Matricula
    (
     idMatricula INT IDENTITY(1,1)  PRIMARY KEY,
     DataMatricula SMALLDATETIME,
     /*Demais Campos*/
    
     /*Associativas*/
     IdAluno INT FOREIGN KEY REFERENCES dbo.Aluno(idAluno),
     IdClasse  UNIQUEIDENTIFIER FOREIGN KEY REFERENCES  dbo.Classes(IdClasse),
     
    )
    

    --#Inserção de dados

    INSERT INTO dbo.Aluno( Nome, CPF, Telefone, Email ) VALUES  ( 'Aluno 1', '000.000.000-00','(61)9999-9999', 'algumacoisa@gmailcom.com' )
    INSERT INTO dbo.Aluno( Nome, CPF, Telefone, Email )VALUES  ( 'Aluno 2', '000.000.000-01', '(61)9999-9998', 'algumacoisa2@gmailcom.com')
    
    INSERT INTO dbo.Classes ( IdClasse, NomeClasse ) VALUES  ( NEWID(),'8ª Serie A'),( NEWID(),'8ª Serie B'),( NEWID(),'8ª Serie C')
    INSERT INTO dbo.Matricula ( DataMatricula, IdAluno, IdClasse ) VALUES  ( GETDATE(), 1, '3F1CFD1E-32B6-43E6-B006-21322E80BB61'),( GETDATE(), 2, '3F1CFD1E-32B6-43E6-B006-21322E80BB61')
    

    --# Select com INNER JOIN

    SELECT * FROM dbo.Matricula AS M
    JOIN dbo.Aluno AS A ON A.idAluno = M.IdAluno
    JOIN dbo.Classes AS C ON C.IdClasse = M.IdClasse

    Por favor,  marque-o como respondidas se está respondeu a sua pergunta 
    ou marcá-lo como útil se está ajudou a resolver o seu problema 
    Wesley Neves
    MTA-Database Fundamentals 
    Analista Desenvolvedor.NET


    Wesley Neves

    segunda-feira, 20 de fevereiro de 2017 11:52
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 22 de fevereiro de 2017 12:12