Pular para o conteúdo
  • Este tópico contém 7 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 5 meses atrás por rodrigo_scorsatto.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #82560
    rodrigo_scorsatto
    Participante

      meu BD:

      create table DISCIPLINAS(
      Disciplina char(8) primary key,
      Denominacao char(50) not null,
      Nivel numeric(2));

      create table ALUNOS(
      Matricula numeric(8) primary key,
      Nome char(25) not null,
      Sexo char(1) not null,
      Idade numeric(2) not null,
      Curso char(5) not null);

      create table PROFESSORES(
      Disciplina char(8) references DISCIPLINAS,
      Turma char(3),
      Ano_sem char(6),
      Professor varchar (50) not null,
      primary key(Disciplina, Turma, Ano_sem));

      create table HISTORICO(
      Matricula numeric(8) references ALUNOS,
      Disciplina char(8),
      Turma char(3) not null,
      Ano_sem char(6) not null,
      Nota numeric(3,1) not null,
      primary key(Matricula, Disciplina, Ano_sem),
      foreign key(Disciplina, Turma, Ano_sem) references PROFESSORES);

      pessoal eu estou com uma duvida pra fazer uma consulta que pede o seguinte:

      Nome, sexo e idade dos alunos e nome, sexo e idade de seus colegas, onde um aluno é
      colega de outro quando, no mesmo ano_semestre, cursaram a mesma disciplina/turma

      eu fiz essa query:

      select distinct aluA.nome as “Nome Aluno”, aluA.sexo as “Sexo Aluno”, aluA.idade as “Idade Aluno”, aluB.nome as “Nome Colega”, aluB.sexo as “Sexo Colega”, aluB.idade as “Idade Colega” from alunos aluA

      inner join historico hist on aluA.matricula=hist.matricula

      inner join alunos aluB on aluA.matricula=aluB.matricula

      eu fiz os joins mais meu problema é como eu vou comparar os colegas, eu não sei como fazer isso, alguem sabe?

      #82562
      Ishii
      Participante

        Olá,

        Faltou relacionar as tabelas de disciplina e turma para que vc tenha toda a informação que precisa…

        []s Ishii

        #82563
        rodrigo_scorsatto
        Participante

          eu não tenho a tabela turma… o problema eh como eu vou comparar na tabela historico o aluno com ano_sem e turma = colega ano_sem e turma

          entendeu?

          #82565
          rodfbar
          Participante

            ola..

            deixa eu ver se entendi


            select aluno.nome, aluno.sexo, aluno.idade,colega.nome, colega.sexo, colega.idade
            from aluno aluno
            ,historico hist_aluno
            ,historico hist_colega
            ,aluno colega
            where hist_aluno.matricula = hist_colega.matricula
            and hist_colega.Ano_sem = hist_aluno.Ano_sem(+)
            and hist_colega.Disciplina = hist_aluno.Disciplina(+)
            and hist_colega.Turma(+) = hist_aluno.Turma
            and colega.matricula(+) = hist_colega.matricula

            #82566
            rodrigo_scorsatto
            Participante

              sim eh assim mesmo, mais meu problema eh que eu tenho que usar inner join, mais acho que fica a mesma coisa, certo? valeu pela ajuda !

              #82567
              rodrigo_scorsatto
              Participante

                [quote=”rodrigo_scorsatto”:hyl2umic]sim eh assim mesmo, mais meu problema eh que eu tenho que usar inner join, mais acho que fica a mesma coisa, certo? outra coisa o que significa isso (+) ? valeu pela ajuda ![/quote]

                #82568
                rodfbar
                Participante

                  (+) seria uma especie de outer join

                  talvez seria a mesma coisa de: ao invez de vc utilizar o “inner join” voce utilizasse o “left outer join”, coisa aparecida…

                  serve para trazer dados em uma tabela mesmo se estes dados nao existam na outra do join… como neste seu caso, por exemplo, pode ocorrer de nem todos os alunos terem colegas, ou nem sequer hitórico… mas mesmo assim voce faz ele retornar na consulta

                  abrçs

                  #82569
                  rodrigo_scorsatto
                  Participante

                    ah entendi, bom nesse caso eu não vou usar então porque eu quero que retorne somente os colegas do aluno, se ele não tiver não deve retornar nada… valeu !

                    abraço !

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.
                  plugins premium WordPress