Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HilarYo

Select a três tabelas

Recommended Posts

Boas tardes,

Tenho 3 tabelas, a tabela CLIENTES, INSCRICAO e AULAS.

 

A tabela Inscrições tem chave estrangeiras:

  • ID_CLIENTES (FK)
  • ID_AULAS (FK)
E chave primária:
  • ID_INSCRICAO
O Objectivo é criar um select, mas que apresente todas as tabelas em função das inscrições ou seja (tabela.atributo):

 

INSCRICAO.ID_INSCRICAO | INSCRICAO.DATA | CLIENTES.CNOME | AULAS.ANOME | AULAS.DATA | AULAS.VAGAS |

 

Já experimentei usar o modelo:

SELECT INSCRICAO.ID_INSCRICAO, INSCRICAO.DATA, CLIENTES.CNOME, AULAS.ANOME,AULAS.DATA,AULAS.VAGAS
FROM table1 INSCRICAO
LEFT OUTER JOIN
  table2 CLIENTES ON INSCRICAO.ID_INSCRICAO=CLIENTES.ID_CLIENTES
LEFT OUTER JOIN
  table3 AULAS ON AULAS.ID_AULA = INSCRICAO.ID_INSCRICAO;
Ou me dá erro ou multiplica as linhas das tabelas, e o objectivo era ter o mesmo numero de registos que a tabela inscrições

Alguém pode ajudar?

Obrigado

Cumps

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao seria ...

 

 

table3 AULAS ON AULAS.ID_AULA = INSCRICAO.ID_aula;

 

 

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá erro :

Error starting at line : 1 in command -
SELECT INSCRICAO.ID_INSCRICAO, INSCRICAO.DATA, CLIENTES.CNOME, AULAS.ANOME,AULAS.DATA,AULAS.VAGAS
FROM table1 INSCRICAO
LEFT OUTER JOIN
  table2 CLIENTES ON INSCRICAO.ID_INSCRICAO=CLIENTES.ID_CLIENTES
LEFT OUTER JOIN
  table3 AULAS ON AULAS.ID_AULA = INSCRICAO.ID_aula
Error at Command Line : 6 Column : 3
Error report -
SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

O MODELO ER é o seguinte:

O que queria mesmo era uma forma de por os registos das inscrições mas com os dados também das outras tabelas CLIENTES-INSCRICA-AULAS

j0wjgh.jpg

 

mesmo com o código

SELECT INSCRICAO.ID_INSCRICAO, INSCRICAO.DATA, CLIENTES.CNOME, AULAS.ANOME,AULAS.DATA,AULAS.VAGAS
FROM INSCRICAO
LEFT OUTER JOIN
  CLIENTES ON INSCRICAO.ID_INSCRICAO=CLIENTES.ID_CLIENTES
LEFT OUTER JOIN
  AULAS ON AULAS.ID_AULA = INSCRICAO.ID_aula;

Dá o seguinte erro:

 

Error starting at line : 1 in command -
SELECT INSCRICAO.ID_INSCRICAO, INSCRICAO.DATA, CLIENTES.CNOME, AULAS.ANOME,AULAS.DATA,AULAS.VAGAS
FROM INSCRICAO
LEFT OUTER JOIN
  CLIENTES ON INSCRICAO.ID_INSCRICAO=CLIENTES.ID_CLIENTES
LEFT OUTER JOIN
  AULAS ON AULAS.ID_AULA = INSCRICAO.ID_aula
Error at Command Line : 4 Column : 38
Error report -
SQL Error: ORA-00904: "CLIENTES"."ID_CLIENTES": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Partindo" de incricoes só serão exibidos os clinres que tiverem inscrições, é este o problema !?

Compartilhar este post


Link para o post
Compartilhar em outros sites
CREATE OR REPLACE VIEW C_INSCRICOES
SELECT INSCRICAO.ID_INSCRICAO,AULAS.DATA,CLIENTES.CNOME,AULAS.ANOME,AULAS.VAGAS
FROM INSCRICAO
LEFT OUTER JOIN
  CLIENTES ON CLIENTES.ID_CLIENTE=INSCRICAO.ID_CLIENTE
LEFT OUTER JOIN
  AULAS ON AULAS.ID_AULA = INSCRICAO.ID_aula
  order by extract (DAY from AULAS.DATA)DESC;

Já consegui solucionar o problema, Muito obrigado

Cumprimentos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.