Ir para conteúdo

Arquivado

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

josenilson

Comparando Valores

Recommended Posts

Pessoal Tenho uma tabela com dois valores motorista e telefone, fiz uma consulta onde através do id da tabela motorista eu listo o telefone do mesmo, eu cadastro esses motoristas em outra tabela, o que preciso fazer é comparar o motorista que foi cadastrado na tabela Jornada,  com o motorista da tabela motorista e mostrar o telefone do mesmo . 

 

como posso fazer essa comparação ? 

 

No código abaixo esta uma consulta básica onde mostro o telefone do respectivo motorista através da sua id, a  variável  $Cad_Jornada,  eu mostro o mesmo motorista que esta cadastrado na outra tabela mencionado acima, tabela jornada , preciso comparar o  motorista da tabela jornada  com o motorista da tabela motorista e trazer o seu telefone .

 

Desde já agradeço.  

<?php

$Cad_Jornada["Motorista"];					
 					
$idMotorista = "13"; //variavel com o id do motorista


require("conexao.php"); //arquivo com parametros da conexão da base
$consulta = $conexao->query("SELECT telefone FROM motorista where idMotorista= $idMotorista;"); // consulta o campo telefone da tabela motorista 
$dadosBd = $consulta->fetch(PDO::FETCH_ASSOC);

echo $dadosBd['telefone']; mostro o telefone de acordo com o id na variavel motorista 
					
					
?>

  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar um join de uma tabela para a outra, pega uma coluna em comum entre os dois. Nesse caso usaria o Left Join ou Right Join, depende o raciocínio que usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, Leonardo B. Tosin disse:

Tenta usar um join de uma tabela para a outra, pega uma coluna em comum entre os dois. Nesse caso usaria o Left Join ou Right Join, depende o raciocínio que usar.

Obrigado pelas dicas,  então com faço nesse seguindo esse linha de raciocínio:

 

duas tabelas

1 tabela                                                2 tabela 

motorista                                             jornada

idmotorista                                         idjornada

motorista                                           motorista

telefone  

 

preciso comparar o motorista da tabela 2 com o da tabela 1  e mostrar o telefone dele . 

 

como faria isso ?

 

o Guilherme me deu um exemplo porem este não funcionou, ele não retorna erro mas também não mostra o telefone no echo, devo estar errando em alguma coisa. 

 

<?php
							
$idMotorista = "12"; //variavel com o id do motorista

require("conexao.php"); //arquivo com parametros da conexão da base
//$consulta = $conexao->query("SELECT telefone FROM motorista where idMotorista= $idMotorista;");
$consulta = $conexao->query("SELECT motorista.telefone as motoFone,Cad_Jornada.Motorista as jornaFone FROM motorista
INNER JOIN Cad_Jornada ON Cad_Jornada.Motorista = motorista.telefone WHERE motorista.idMotorista='$idMotorista'");
$dadosBd = $consulta->fetch(PDO::FETCH_ASSOC);

echo $dadosBd["telefone"];


?>


<?php 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 horas atrás, Leonardo B. Tosin disse:

Tenta usar um join de uma tabela para a outra, pega uma coluna em comum entre os dois. Nesse caso usaria o Left Join ou Right Join, depende o raciocínio que usar.

Leonardo, 

 

Em pesquisa na internet chegue ate esse ponto. 

SELECT motorista.motorista "Motorista",   //TABELA motorista.(campo motorista) "Motorista",
       cad_jornada.Motorista "Motorista" //TABELA cad_jornada.(campo motorista) "Motorista",
 FROM motorista   // tabela motorista 
 INNER JOIN cad_jornada ON cad_jornada.Motorista = motorista.Motorista  (aqui se eu entendi bem ele faz comparação com as duas colunas motoristas das tabelas e mostra o resultado).

o que quero fazer é compara o Motorista da tabela cad_jornada com o Motorista da tabela motorista e mostrar a coluna telefone desse motorista . (esta coluna telefone esta na tabela motorista).

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha esse exemplo:

 

-----------------------------------------

 

SELECT DISTINCT radpostauth.id, radpostauth.username, IF(reply = "Access-Reject", radpostauth.pass, "") AS pass, radpostauth.reply, DATE_FORMAT(radpostauth.authdate, "%d/%m/%Y %H:%i:%s") AS data FROM radpostauth LEFT JOIN radcheck ON radpostauth.username = radcheck.username WHERE radpostauth.username LIKE "%elintonb%" ORDER BY authdate DESC LIMIT 200

 

------------------------------------------------------------------------------------------

 

imagina que uma tabela é a radpostauth e a outra radcheck. Estou comparando os usernames dessas duas tabelas que são os únicos em comum entre elas, como estou usando o LEFT, está jogando todas as colunas da tabela 1 para a 2, e se der um SLECT *, vai sair uma tabela de 8 colunas, que seria as duas juntas.. Tem que sempre usar o elemento em comum entre as duas, ou usae como eu gosto de chamar, "elemento ancora", uma coluna da tabela que define uma coluna de outra tabela. Nessa seria a coluna pass da primeiro com attribute da segunda, que dependendo do que estiver inserido nessa coluna resultará em alguma opção de atributo na coluna 2.

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, Leonardo B. Tosin disse:

Olha esse exemplo:

 

-----------------------------------------

 

SELECT DISTINCT radpostauth.id, radpostauth.username, IF(reply = "Access-Reject", radpostauth.pass, "") AS pass, radpostauth.reply, DATE_FORMAT(radpostauth.authdate, "%d/%m/%Y %H:%i:%s") AS data FROM radpostauth LEFT JOIN radcheck ON radpostauth.username = radcheck.username WHERE radpostauth.username LIKE "%elintonb%" ORDER BY authdate DESC LIMIT 200

 

------------------------------------------------------------------------------------------

 

imagina que uma tabela é a radpostauth e a outra radcheck. Estou comparando os usernames dessas duas tabelas que são os únicos em comum entre elas, como estou usando o LEFT, está jogando todas as colunas da tabela 1 para a 2, e se der um SLECT *, vai sair uma tabela de 8 colunas, que seria as duas juntas.. Tem que sempre usar o elemento em comum entre as duas, ou usae como eu gosto de chamar, "elemento ancora", uma coluna da tabela que define uma coluna de outra tabela. Nessa seria a coluna pass da primeiro com attribute da segunda, que dependendo do que estiver inserido nessa coluna resultará em alguma opção de atributo na coluna 2.

mano mais um vez venho agradecer pela forca, mas como todo iniciante  o que tenho ate o momento e a energia positiva e persistência de que vou conseguir, só que, visto  o que você citou esta muito avançado para mim . 

 

o que conseguir fazer ate o momento foi ,  realizar essa consulta no banco de dados já e um começo ela esta comparando os dois campos motorista que consta na tabela Motorista e na tabela cad_jornada. 

 

SELECT motorista.Motorista "Motorista",
     cad_jornada.Motorista "Motorista"
  FROM motorista
 INNER JOIN cad_jornada  ON cad_jornada.Motorista = motorista.Motorista

 

No anexo esta as duas tabelas, tabela A motorista, tabela B jornada  ou seja os motoristas da tabela A, eu cadastro na tabela B isso falando em aplacação pelo formulário,  o que estou tentando é compara o motorista como exemplo o Paulo Roberto :

preciso retornar o telefone dele  ou seja compara nas duas tabela e mostrar o telefone que consta na A . 

 

tabela motorista.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 horas atrás, josenilson disse:

mano mais um vez venho agradecer pela forca, mas como todo iniciante  o que tenho ate o momento e a energia positiva e persistência de que vou conseguir, só que, visto  o que você citou esta muito avançado para mim . 

 

o que conseguir fazer ate o momento foi ,  realizar essa consulta no banco de dados já e um começo ela esta comparando os dois campos motorista que consta na tabela Motorista e na tabela cad_jornada. 

 


SELECT motorista.Motorista "Motorista",
     cad_jornada.Motorista "Motorista"
  FROM motorista
 INNER JOIN cad_jornada  ON cad_jornada.Motorista = motorista.Motorista

 

No anexo esta as duas tabelas, tabela A motorista, tabela B jornada  ou seja os motoristas da tabela A, eu cadastro na tabela B isso falando em aplacação pelo formulário,  o que estou tentando é compara o motorista como exemplo o Paulo Roberto :

preciso retornar o telefone dele  ou seja compara nas duas tabela e mostrar o telefone que consta na A . 

 

tabela motorista.png

Leonardo, 

 

cheguei ate este ponto, ou seja, no código abaixo eu consigo listar o que quero, o  telefone  do motorista porem tenho que setar manualmente o id na variável $idMotorista["13"];  preciso que ele mostre  o telefone do respectivo motorista que esta cadastrado na tabela jornada. 

 

Eu tenho o motorista da tabela jornada nessa variável $Cad_Jornada["Motorista"]; 

 

preciso saber como associar isso. 

<?php
$idMotorista ='13'; //variavel com o id do motorista
require("conexao.php"); //arquivo com parametros da conexão da base
$consulta = $conexao->query("SELECT  motorista.telefone, cad_jornada.Motorista AS Motorista
FROM motorista
INNER JOIN cad_jornada ON cad_jornada.Motorista = motorista.Motorista WHERE motorista.idMotorista='$idMotorista'");
$dadosBd = $consulta->fetch(PDO::FETCH_ASSOC);


echo $dadosBd["telefone"];	
 ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal fica aqui meu agradecimento a todos, finalizei o que precisava, deixo aqui uma breve descrição para outros possam ser ajudados com o mesmo assunto.

 

Neste tópico eu estava em busca de compara uma coluna  que contem em duas tabelas distintas, ou seja tenho a tabela A motorista e tenho a tabela B jornada no código descrito abaixo eu comparo o motorista que esta cadastrado na tabela jornada e listo o telefone que consta na tabela motorista do respectivo motorista que esta cadastrado.  

 

 

<?php

$idCad_Jornada = $Cad_Jornada['idCad_Jornada'];
//variavel com o id da jornada
require("conexao.php"); //arquivo com parametros da conexão da base
//$consulta = $conexao->query("SELECT telefone FROM motorista where idMotorista= $idMotorista;");
$consulta = $conexao->query("SELECT  motorista.telefone, cad_jornada.Motorista AS Motorista
FROM motorista
INNER JOIN cad_jornada ON cad_jornada.Motorista = motorista.Motorista WHERE cad_jornada.idCad_Jornada='$idCad_Jornada'");
$dadosBd = $consulta->fetch(PDO::FETCH_ASSOC);


echo $dadosBd["telefone"];	
							
					
?>

59307a9f6e1de_tabelamotorista.thumb.png.3efbe56a6b150c8f65ce0ddf87f03490.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por janir.matheus
      Boa tarde, peço ajuda dos membros desse fórum pois confesso estar completamente perdido.
      Tomando como base o diagrama (em anexo), preciso de uma query que retorne as empresas, seus produtos e as categorias de cada produto, sendo que cada produto pode pertencer a uma ou mais categorias.
       
      select tbl_produtos.Empresa, tbl_empresas.Nome, tbl_catprod.Categoria, tbl_classproduto.Classe, tbl_produtos.Id, tbl_produtos.Produto from tbl_produtos inner join tbl_empresas on tbl_produtos.Empresa = tbl_empresas.Id left join tbl_catprod on tbl_produtos.Id = tbl_catprod.Categoria left join tbl_classproduto on tbl_catprod.Categoria = tbl_classproduto.Id; Tentei a consulta mostrada acima mas o resultado não foi o que eu esperava.
      Agradeço antecipadamente pela ajuda.

    • Por FabianoSouza
      Pessoal, por que essa query com COLLATE  não funciona?
      declare @strPesquisa varchar(30) SET @strPesquisa = 'naicle' SET @sql = 'SELECT ' SET @sql = @sql + 'ML.nome ' SET @sql = @sql + 'FROM ' SET @sql = @sql + 'dbo.minhaTab AS ML ' SET @sql = @sql + ' WHERE ' SET @sql = @sql + ' nome LIKE ' SET @sql = @sql + '''%' + @strPesquisa COLLATE Latin1_General_CI_AI + '%''' EXEC (@sql) Não acusa erro ao rodar.
      Mas não traz os registro porque está gravado como "naiclê" (com acento), o que significa que não está aplicando a COLLATE.
       
      Montando essa mesma query mas da forma tradicional, o COLLATE funciona.
       
      SELECT ML.nome FROM dbo.minhaTab AS ML WHERE nome LIKE '%'+ @strPesquisa COLLATE Latin1_General_CI_AI+'%'  
       
    • Por peterstefan
      Olá, estou com uma query aqui e preciso pegar de 2 campos diferentes os dados diferente de 0,  mais quanto tento no AND ele somente traz um resultado, o OR ele traz um dos campos com o valor 0, teria alguma forma de pegar os dados diferente de 0 dos dois campus?
      preciso pegar o idOrganizador diferente de 0 e o idPiloto diferente de 0 
       
      SELECT * FROM boletos WHERE proc = 0 AND idOrganizador !='0' AND idPiloto ='0';  
    • Por mamotinho
      oi pessoal estou com um problema , não estou conseguindo passar todos os valores o foreach no json_encode() alguém poderia me ajudar, eu estou tentando monta um mecanismo de refresh em tempo real de uma lista de notificação veja abaixo:
       
      <script type="text/javascript"> function make_call() { // Fazendo requisição AJAX $j.post('teste.php', function (frase) { // Exibindo frase $j('#listas').html('<i>' + frase + '</i>'); }, 'JSON'); setTimeout(function(){ make_call(); }, 5000); } </script>
      Aqui é o arquivo que quero enviar para a div #lists
       
      <?php require("conexao/directory.php"); $notificar = $db->query("select TOP 5 * from Techi7CP.dbo.cabal_notificacao_geral order by regdate desc"); $notificacao = $notificar->fetchAll(); $count_notificacao = abs($notificar->rowCount()); if($count_notificacao==0){ echo '<li style="text-align:center;">não existe notificações no momento.</li>'; }else{ foreach($notificacao as $notif){ $consulta_conta = $db->query("select * from account.dbo.cabal_auth_table where UserNum='".$notif['usernum']."'")->fetchObject(); switch($notif['acao']){ case 'logadopremiado' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle red small">redeem</span>'.$notif['jogador'].' ganhou no Logado Premiado</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'mudarsenha' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle teal small">vpn_key</span>'.$consulta_conta->Nome.' alterou sua senha</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'distribuirpontos' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle cyan small">control_point</span>'.$notif['jogador'].' distribuiu seus pontos</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'girodasorte' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle brown small">star_border</span>'.$consulta_conta->Nome.' usou o giro da sorte</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'sistematpoint' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle green small">golf_course</span>'.$notif['jogador'].' recebeu seu tpoint por clique</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; case 'combo' : echo ' <li><a class="black-text" href="#!"><span class="material-icons icon-bg-circle amber small">videogame_asset</span>'.$notif['jogador'].' fez '.$notif['ExtraDetalhes'].' em sua primeira vez</a> <time class="media-meta grey-text darken-2" datetime="2015-06-12T20:50:48+08:00"> '.Data::ExibirTempoDecorrido(date("Y-m-d H:i:s.B", strtotime($notif['regdate']))).'</time> </li>'; break; } } } ?> como eu faria para ser exibido todos os resultados registrados com o json_encode().
    • Por mamotinho
      Olá, pessoal mais uma vez venho pedi a ajuda de vocês estou com um problema ao roda uma query que montei, eu sou iniciante na area e não tenho muito conhecimento então o codigo que fiz foi parte de meu conhecimento básico. bom o que eu quero resolver nessa query é o seguinte, eu quero consultar uma tabela e nela pega todos os registros com a a data vencida e lista ela dentro do while em seguida retornar dentro desse if o valor da coluna de cada uma exemplo de como fiz e ficou com loop infinito.

       
      declare @id int declare @getdate datetime select @id = IDCadastrado, @getdate = RegDate from BancoTeste.dbo.MinhaTabela where RegDate < getdate() while @id is not null begin select * from BancoTeste.dbo.MinhaTabela where IDCadastrado = @id end quando eu executo isso ai ele executa infinitamente o valor do primeiro registro repetidamente.
×

Informação importante

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