Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 7 anos, 10 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #108524
    Avatar de eurico raimundoeurico raimundo
    Participante

      Boa tarde. Eu sou novo no banco de dados Oracle e estou fazendo um trabalho.
      Eu tenho que criar um View para mostrar:
      .Número do Banco
       Nome do Banco
       Agência
       Conta
       Nome da conta
       Saldo inicial
       Saldo atual

      As tabelas eu criei e ficaram assim:
      CREATE TABLE BANCOS(
      NRO_BANCO CHAR (3) NOT NULL,
      NOME_BANCO VARCHAR (30),
      CONSTRAINT PK_BANCOS PRIMARY KEY (NRO_BANCO)
      );

      CREATE TABLE CONTAS(
      NRO_BANCO CHAR (3) NOT NULL,
      AGENCIA INTEGER NOT NULL,
      CONTA INTEGER NOT NULL,
      NOME_CONTA VARCHAR(30),
      SALDO_INICIAL NUMERIC (12,2),
      SALDO NUMERIC (12,2),
      CONSTRAINT PK_CONTAS PRIMARY KEY (NRO_BANCO, AGENCIA, CONTA),
      CONSTRAINT FK_BANCOS FOREIGN KEY(NRO_BANCO) REFERENCES BANCOS(NRO_BANCO)

      );

      CREATE TABLE FLUXO_CAIXA(
      ID INTEGER NOT NULL,
      DATA_LANCAMENTO DATE,
      NRO_BANCO CHAR (3),
      AGENCIA INTEGER,
      CONTA INTEGER,
      DESCRICAO VARCHAR (50),
      TIPO_LANCAMENTO CHAR(1),
      VALOR NUMERIC (12,2),
      CONSTRAINT PK_FLUXO PRIMARY KEY (ID),
      CONSTRAINT FK_NRO_BANCOS FOREIGN KEY(NRO_BANCO, AGENCIA, CONTA) REFERENCES CONTAS (NRO_BANCO,AGENCIA, CONTA)
      );

      Tem como vocês me dar uma ajuda porque eu já tentei de diversas maneiras e não consegui.
      Obrigado.

      #108529
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Blz ? Então, não vou (por questão de tempo/esforço) te dar uma resposta completa e prontinha, mas ao invés vou Tentar te dar os conceitos pra vc progredir e fazer sozinho – imagino que é Isso que teu professor/orientador quer que vc faça, né ?
        Muito bem : para vc ler informações de múltiplas tabelas de uma vez só (o chamado JOIN) vc indica na linha do FROM (que vem depois do SELECT) o nome das tabelas , ** E ** também precisa indicar qual é a CHAVE, ie, qual os dados que estão repetidos nas tabelas….
        Vamos começar pela BANCOS e pela CONTAS : pelas constraints dá pra ver que a chave primária única em BANCOS é a coluna NRO_BANCO, e esse mesma coluna tá repetida na CONTAS como chave estrangeira (ie, informação filha, que vêm de outra tabela) – juntando isso, teríamos algo do tipo :

        SELECT bancos.NRO_BANCO, bancos.NOME_BANCO, CONTAS.AGENCIA, CONTAS.CONTA, CONTAS.nome_conta, CONTAS.saldo_inicial, CONTAS.saldo
        FROM BANCOS, CONTAS
        WHERE bancos.NRO_BANCO = CONTAS.NRO_BANCO;

        ==> pronto, se vc rodar a consultinha acima vc vai obter o número e o nome de cada banco cadastrado na tabela BANCOS, E cada banco desses vai ter um registro-filho com o mesmo valor de nro_banco que estava em BANCOS repetido na CONTAS : é o que estou especificando na linha WHERE bancos.NRO_BANCO = CONTAS.NRO_BANCO….

        Siga fazendo O MESMO (ie, identificando as colunas-chaves, listando as tabelas no FROM, indicando as colunas a serem exibidas no SELECT, tal que nem) para a(s) próxima(s) tabela(s), ok ???

        []s

        Chiappa

        OBS :

        1. opcionalmente ao invés de vc prefixar as colunas com o nome completo de cada tabela, pra abreviar é possível vc indicar um ‘apelido’ mais curto pra cada tabela no FROM, e aí prefixar as colunas com esse apelido – por exemplo, se eu apelidar as tabelas de A e B ficaria assim a query :

          SELECT a.NRO_BANCO, a.NOME_BANCO, b.AGENCIA, b.CONTA, b.nome_conta, b.saldo_inicial, b.saldo
          FROM BANCOS a, CONTAS b
          WHERE a.NRO_BANCO = b.NRO_BANCO;

        2. no RDBMS Oracle é possível vc indicar as colunas-chave na linha/posição do comando WHERE (como eu fiz), que é a sintaxe tradicional do RDBMS Oracle, ** OU ** é possível usar a sintaxe mais ‘nova’, ditada pelo comitê que padroniza a linguagem SQL, com a palavra-chave JOIN ao invés do WHERE : ambas funcionam, vc usa a que achar melhor/gostar mais, eu usei a sintaxe ‘antiga’ porque estou mais acostumado com ela…

        ==>> SE mesmo depois desta explicação na nova tentativa vc engasgar em algum ponto , MOSTRA PRA GENTE exatamente como vc está fazendo, o texto completinho da sua query, a msg de erro que dá, E manda uns INSERTs com dados, que a gente tenta reproduzir e te mostrar onde vc está errando… Mas PLZ tenta sozinho primeiro, senão vai ser uma Oportunidade de aprendizado perdida …

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