Jump to content
Fórum Script Brasil
  • 0

Consulta De Duas Chaves Estrangeiras


JIAP
 Share

Question

Tudo bom pessoal? Meu primeiro post aqui :D

É o seguinte, tenho duas tabelas

CIDADE

Cod_Cidade (PK)

Nome_Cidade

PERCURSO

Cod_Percurso (PK)

Cod_Cidade_Origem (FK)

Cod_Cidade_Destino (FK)

Preciso fazer uma Consulta para saber o nome das cidades de origem e destino quando o Cod_Percurso for igual a um determinado valor.

Obrigado pela ajuda pessoal!

Exemplo de Dados

CIDADE

Cod_Cidade | Nome_Cidade

01 São Paulo

02 Rio de Janeiro

PERCURSO

Cod_Percurso | Cod_Cidade_Origem | Cod_Cidade_Destino

23 01 02

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Obrigado andreia_sp!

Eu editei minha pergunta, não sei se vai alterar a sua resposta.

Esqueci de mencionar que preciso do nome da cidade de origem e destino.

Ainda não testei o que me passou pois estou em horário de almoço.

Obrigado pela ajuda.

Link to comment
Share on other sites

  • 0

eu marquei errado, onde está cidade é Nome_Cidade, ou seja:

select c.nome_cidade, p.Cod_Cidade_Origem, p.Cod_Cidade_Destino from cidade c inner join percurso p on c.cod_cidade = p.Cod_Cidade_Origem where c.cod_percurso = 23

o nome da cidade de destino e origem está em outra tabela?

Link to comment
Share on other sites

  • 0

Note que o filtro foi pelo cod_percuso=23. Por isso que aparece somente 1 registro. Caso voce queira que mostre os registros da tabela cidade mesmo quando não retornar resultado da tabela percurso, use o Left join:

select c.nome_cidade, p.Cod_Cidade_Origem, p.Cod_Cidade_Destino from cidade c left join percurso p on c.cod_cidade = p.Cod_Cidade_Origem where c.cod_percurso = 23

para exibir os outros campos é só colocar os nomes deles, caso perteçam à tabela de cidade é só colocar na frente do nome do campo o c.

Link to comment
Share on other sites

  • 0

Exato, quero que me retorne somente um registro. Mas nessa tupla precisa ter os campos:

Codigo_Percurso, NomeCidadeOrigem, NomeCidadeDestino

23 | são Paulo | Rio de Janeiro

Nakela sql que me passou, ela retorna o seguinte:

são Paulo | 01 | 02

Valeu d+ aí a atenção.

Link to comment
Share on other sites

  • 0

Só existe o campo Nome_Cidade na tabela CIDADE

Nome_Cidade_Destino e Nome_Cidade_Origem é um alias.

Como na tabela PERCURSO tem duas chaves estrangeiras de uma mesma tabela, então é preciso usar um rolename para não ter dois campos iguais.

Link to comment
Share on other sites

  • 0

opa foi mal, hoje to com raciocinio lento rsss, tente agora:

select p.codigo_percurso, c.nome_cidade [Cidade destino], c2.nome_cidade [Cidade origem] from percurso p
inner join cidade c on c.codigo_cidade = p.codigo_cidade_destino
inner join cidade c2 on c2.codigo_cidade = p.codigo_cidade_origem
where p.codigo_percurso = 23

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...