Jump to content
Sign in to follow this  
fimiani_lucas

SELECT de 2 FK na mesma tabela

Recommended Posts

Tendo em vista este cenario:


Imagine um cenário no ramo da oceanografia, onde a tabela_A , além da chave primaria, precise guardar também a direção do vento(dir_vento) e a direção da ondulação(dir_ondulacao). Sabendo que a tabela_ventos(id_vento, desc_vento) possui todas as direções possíveis, e ambos os campos dir_vento e dir_ondulacao também são ventos, seria possível que eles guardassem a id_vento, para futuramente eu resgatar a dsc_vento da tabela vento a partir deles, ou seja, seriam os campos dir_vento e dir_ondulacao chaves estrangeiras da tabela_ventos.


como faço para executar o select?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Danado_
      como eu seleciono da seguinte forma: 
       
      tabela cadastro;
      id 1 - fulano
      id 2 - bertano
      id 3 - fulaninho
      ---------------------------------------
      Observações:
      estou usando um select multiple e dou um insert into na tabela a abaixo ficando assim:
      ----------------------------------------
      tabela mesas
      id 1 - fulano, bertano
      -----------------------------------------

      ok até ai!
       
      AGORA QUE PRECISO DA AJUDA DE VOCÊS!
      preciso fazer um inner, left ou righ para TRAZER APENAS O  id 3 - fulaninho (no caso verificando as duas tabelas e selecionando apenas o que NAO foi selecionado!)
       
      tenho isso:
       
      <select name="nome[]" multiple> <?php $mapa = mysqli_query($con, "SELECT * FROM cadastro'"); while($dados = mysqli_fetch_assoc($mapa)){ ?> <option><?php echo $dados['nome']; ?></option> <?php } ?> </select>
       
    • By lemanoel
      oi, sou novo por aqui! desculpe se a pergunta é muito simples.... tenho duas tabelas:
      TABELA: atendimento: cd_item data_atend nome_cliente TABELA: documento_clinico cd_doc cd_item data_doc  
      o tenho a relação 1 atendimento para muitos docs. Quero criar um código que diz o número do atendimento e a data do doc mais antigo (apenas 1).  todas as tentativas duplicam o nome do cliente
    • By mnunesd12
      Ola Pessoal, 
      Recentemente comecei a estudar banco de dados por conta própria, para isso estou utilizando o mysql e "brincando" com o banco de dados de uma locadora que vem de exemplo no mysql, chamado sikila.
      Eu queria saber como eu faço uma query para selecionar os todos os clientes que já alugaram o mesmo filme em momentos diferentes.
       
      Select fm.film_id, fm.title cus.customer_id, concat( cus.first_name, " ", cus.last_name) as Nome from film as fm inner join inventory as inv on fm.film_id = inv.film_id inner join rental as rt on inv.inventory_id = rt.inventory_id inner join customer as cus on rt.customer_id = cus.customer_id Where rt.customer_id = 49 and rt.customer_id = 127 Nessa query eu sei que os customers números 49 e 127, já alugaram o mesmo filme, porém, não sei por qual motivo, a query não resulta em nada.
      Caso necessitem de mais informações fiquem à vontade para solicitar.
      Obrigado pela ajuda
       
    • By luizfabianochaves
      buenas pessoal..
       
      estou com um problema em um comparativo entre duas tabelas.. uma tabela eu tenho o o resultado das metas e do mix de produtos vendidos na empresa.. calça, camisa, casacos.. etc..
      na outra tabela esta o resultado da venda desses produtos.. preciso de um comparativo que me dê o resultado do que foi vendido.. mas o que não foi vendido liste tambem.. quando comparo a coluna MIX_PRODUTO como igual ela traz o resultado da venda correta mas só o que o representante vendeu.. como está na imagem..
      quando comparo como diferente ele traz todo o mix.. mas ele lista a soma da venda para todo o mix no caso ali embaixo 110 peças e diminui a quantidade vendida... 
      o que preciso é que fique como na segunda imagem.. listando todo o mix, mas aparecendo somente a venda que tem na imagem 1... me fiz entender?
      SELECT  A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE ,A.DS_MUNICIPIO ,A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE,D.MIX_PRODUTO ,SUM(A.QT_SALDO) as QT_REAL FROM IM_DEMANDA A INNER JOIN IM_PERFORMANCE_MIX D ON (D.CD_PERIODO = A.CD_PERIODO) AND (D.CD_MARCA = A.CD_MARCA) AND (D.CD_REPRESENTANTE = A.CD_REPRESENTANTE) AND (D.MIX_PRODUTO = A.MIX_PRODUTO) WHERE A.CD_CLIENTE = '379' AND A.CD_MARCA = '3' AND A.CD_PERIODO = '8' GROUP BY A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE, A.DS_MUNICIPIO, A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE ,D.MIX_PRODUTO
      SELECT  A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE ,A.DS_MUNICIPIO ,A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE,D.MIX_PRODUTO ,SUM(A.QT_SALDO) as QT_REAL FROM IM_DEMANDA A INNER JOIN IM_PERFORMANCE_MIX D ON (D.CD_PERIODO = A.CD_PERIODO) AND (D.CD_MARCA = A.CD_MARCA) AND (D.CD_REPRESENTANTE = A.CD_REPRESENTANTE) AND (D.MIX_PRODUTO <> A.MIX_PRODUTO) WHERE A.CD_CLIENTE = '379' AND A.CD_MARCA = '3' AND A.CD_PERIODO = '8' GROUP BY A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE, A.DS_MUNICIPIO, A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE ,D.MIX_PRODUTO
       
    • By zeboladao
      Boa tarde pessoal, estou com um problema..
       
      Minha tela de listagem mostra todos os dados da tabela "PESSOA", todos não.. os importantes, CPF, NOME, TELEFONE, ATIVO etc..
       
      Existe uma tabela chamada MATRICULA q tem o idpessoa fazendo referencia.
      Nessa matricula existe um campo chamado EVADIDO pra saber se a pessoa evadiu daquele curso q se matriculou.
       
      COmo eu faço pra saber, na minha LISTAGEM, quantas vezes esssa pessoa (aluno) já evadiu de uma matricula(curso), sendo que não tem esse campo na tabela de pessoa, somente pela tabela de matriculas.
       
      Acho que ficou fácil de entender, meu sistema usa esse select atualmente:
       
      SELECT pe.* FROM pessoas pe INNER JOIN cidades ci ON (ci.idcidade=pe.idcidade)  INNER JOIN estados es ON (ci.idestado=es.idestado)  WHERE pe.removido = 'N';  
      Esse Inner JOIN Cidades e Estado é essencial também pois na minha listagem aparece o nome da cidade pois referencia por um ID (as cidades e estados são cadastrados no banco)... o mesmo pra estado.. Preciso deixar tudo isso dentro do mesmo select.
       
      Agradeço antecipadamente!
       
      -- -- Estrutura da tabela `pessoas` -- CREATE TABLE `pessoas` ( `idpessoa` int(10) UNSIGNED NOT NULL, `idcidade` int(10) UNSIGNED NOT NULL, `ativo` enum('S','N') NOT NULL DEFAULT 'S', `removido` enum('S','N') NOT NULL DEFAULT 'N', `login_ativo` enum('S','N') NOT NULL DEFAULT 'S', `data_cad` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `nome` varchar(100) NOT NULL, `estado_civil` enum('S','C','D','V') DEFAULT NULL, `etnia` enum('B','P','N','O','A') NOT NULL, `data_nasc` date NOT NULL, `naturalidade` varchar(100) DEFAULT NULL, `documento` varchar(20) NOT NULL, `rg` varchar(20) DEFAULT NULL, `rg_orgao_emissor` varchar(20) DEFAULT NULL, `rg_data_emissao` date DEFAULT NULL, `nis` varchar(11) NOT NULL, `filiacao_mae` varchar(100) DEFAULT NULL, `filiacao_pai` varchar(100) DEFAULT NULL, `cep` int(8) UNSIGNED DEFAULT NULL, `endereco` varchar(100) DEFAULT NULL, `bairro` varchar(100) DEFAULT NULL, `numero` varchar(10) DEFAULT NULL, `complemento` varchar(100) DEFAULT NULL, `login` varchar(100) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, `sit_ocupacional` enum('EM','DE','AU','AP') DEFAULT NULL, `emp_profissao` varchar(30) DEFAULT NULL, `emp_empresa` varchar(30) DEFAULT NULL, `pcd_visual` enum('BAI','CEG') DEFAULT NULL, `pcd_mental` enum('MEN') DEFAULT NULL, `pcd_auditiva` enum('SBP','SBT') DEFAULT NULL, `pcd_fisica` enum('AMP','1MS','1MI','CAD','NAN','AMS','AMI','OST','PAC','PAR') DEFAULT NULL, `vinc_empregaticio` enum('CA','AU','ME','FP','OU','NT') DEFAULT NULL, `pcd` enum('S','N') NOT NULL, `pcd_qual` enum('F','A','M','V') DEFAULT NULL, `pcd_grau` enum('L','M','A') DEFAULT NULL, `nacionalidade` varchar(100) NOT NULL, `escolaridade` enum('FI','FC','MI','MC','SI','SC') NOT NULL, `formacao` varchar(30) DEFAULT NULL, `sit_escolaridade` enum('C','I','T') DEFAULT NULL, `sit_escolaridade_curso` varchar(30) DEFAULT NULL, `sit_escolaridade_periodo` enum('1','2','3','4','5','6','7','8','9','10') DEFAULT NULL, `instituicao` varchar(100) DEFAULT NULL, `curso_fundat` enum('S','N') DEFAULT NULL, `curso_fundat_qual` varchar(200) DEFAULT NULL, `nr_membros_familia` int(11) NOT NULL, `renda_familiar` enum('1','2','3','4','5','6') NOT NULL, `password` varchar(128) DEFAULT NULL, `observacoes` text, `prog_federal` enum('S','N') DEFAULT NULL, `prog_federal_qual` varchar(200) DEFAULT NULL, `encaminhado_instituicao` enum('S','N') NOT NULL, `encaminhado_instituicao_qual` varchar(200) DEFAULT NULL, `telefone1` varchar(15) DEFAULT NULL, `telefone2` varchar(15) DEFAULT NULL, `ultimo_view` datetime DEFAULT NULL, `ultima_senha` datetime NOT NULL, `avatar_nome` varchar(100) DEFAULT NULL, `avatar_servidor` varchar(100) DEFAULT NULL, `avatar_tipo` varchar(100) DEFAULT NULL, `avatar_tamanho` int(10) UNSIGNED DEFAULT NULL, `sexo` enum('M','F','N') DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Estrutura da tabela `matriculas` -- CREATE TABLE `matriculas` ( `idmatricula` int(10) UNSIGNED NOT NULL, `idhorariooferta` int(10) UNSIGNED NOT NULL, `idpessoa` int(10) UNSIGNED NOT NULL, `removido` enum('S','N') NOT NULL DEFAULT 'N', `data_cad` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `matricula` int(8) UNSIGNED ZEROFILL DEFAULT NULL, `situacao` enum('M','I') NOT NULL DEFAULT 'M', `evadido` enum('S','N') NOT NULL DEFAULT 'N', `desistente` enum('S','N') DEFAULT 'N', `reprovado` enum('S','N') DEFAULT 'N' ) ENGINE=InnoDB DEFAULT CHARSET=latin1;  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.