Ir para conteúdo

POWERED BY:

Arquivado

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

peterlink

Query INNER JOIN

Recommended Posts

Boa noite pessoal do IMasters

Gostaria de uma ajuda de voces numa query.

Tenho minha query que vai dando select em duas tabelas, a query esta funcionando certinho, mas nessas duas tabelas a unica referencia de usuario que eu tenho é o campo de login que sao numeros, mas eu queria exibir ao inves dos numeros o nome dele que tenho cadastrada em uma outra tabela que tem o campo login em comum também, pelo que me falaram é algo com inner join mas nao sei fazer.

Alguem poderia me ajudar?

$sql = "SELECT A.mailing_ba,A.mailing_login,A.mailing_status,historico_ba,B.historico_solucao,B.historico_login FROM retencao_mailing AS A,  retencao_historico AS B WHERE A.mailing_ba = B.historico_ba AND A.mailing_login = B.historico_login AND B.historico_solucao = 'Técnico' AND A.mailing_status='PENDENTE'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

São duas tabelas, uma que tem o login e outra que tem o nome, correto?

 

SELECT tabela_nome.nome from tabela_login INNER JOIN tabela_nome ON tabela_login.id_tabela_nome = tabela_nome.id_tabela_nome WHERE login = 123

 

Entendeu? A ideia do INNER JOIN é tu "linkar" duas ou mais tabelas com algum campo em comum, uma chave estrangeira no caso, dae tu seleciona o campo da tabela linkada normalmente como se fosse só uma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu seletc é de duas tabelas nele nao preciso mexer é so isso pra selecionar mesmo, pq se eu coloco no select algo da tabela C ele printa na tela e eu nao quero nada dela.

o que eu quero fazer é o campo B.historico_login = c.usuarios_login para eu poder pegar o nome que fica na coluna usuarios_nome do login correto. olha meu sql pra você entender mais ou menos, mas ainda nao consegui acertar.

SELECT A.mailing_ba,A.mailing_login,A.mailing_status,historico_ba,B.historico_solucao,B.historico_login FROM retencao_mailing AS A,  retencao_historico AS B INNER JOIN usuarios AS C ON B.historico_login = c.usuarios_login,c.usuarios_nome WHERE A.mailing_ba = B.historico_ba AND A.mailing_login = B.historico_login AND B.historico_solucao = 'Técnico' AND A.mailing_status='PENDENTE'

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu seletc é de duas tabelas nele nao preciso mexer é so isso pra selecionar mesmo, pq se eu coloco no select algo da tabela C ele printa na tela e eu nao quero nada dela.

o que eu quero fazer é o campo B.historico_login = c.usuarios_login para eu poder pegar o nome que fica na coluna usuarios_nome do login correto. olha meu sql pra você entender mais ou menos, mas ainda nao consegui acertar.

SELECT A.mailing_ba,A.mailing_login,A.mailing_status,historico_ba,B.historico_solucao,B.historico_login FROM retencao_mailing AS A,  retencao_historico AS B INNER JOIN usuarios AS C ON B.historico_login = c.usuarios_login,c.usuarios_nome WHERE A.mailing_ba = B.historico_ba AND A.mailing_login = B.historico_login AND B.historico_solucao = 'Técnico' AND A.mailing_status='PENDENTE'

 

Eu não entendi nada agora... Evite criar "variaveis" como A, B, C... Isso complica ainda mais o codigo e prejudica a manunteção, outro detalhe:

 

O que é isso??? Já tas com outro erro de charset...

B.historico_solucao = 'Técnico'

 

Esse "B.historico_login" é o login do historico ou do usuario? Se forem a mesma coisa, então iguale os nomes, pra logo de cara quem for fazer a manunteção nao quebre a cabeca com coisas simples.

B.historico_login = c.usuarios_login

 

Explica melhor o que tu quer...O que eu entendi antes é que eram 2 tabelas, uma do login e a outra do usuário e que tu queria o nome do usuário a parti do login do mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo peterlink, para trabalhar com MySQL também é preciso entender todo um conceito. Existem Primary Keys, Foreign Keys,

Indexes e muitos motivos para cria-las / utiliza-las. Por você não ter percebido que sua query já faz "INNER JOIN" porém de uma

forma diferente e não saber oque é INNER JOIN eu posso presumir que você está tentando fazer manutenção em uma query da

qual não foi mentor. Se foi pare agora mesmo pois desenvolver sem saber como fazer corretamente só vai prejudicar seu conhecimento.

 

Por este motivo eu recomendo que antes de continuar seu desenvolvimento, de uma olha nos tutoriais do google, procure saber

melhor como funcionam a criação de indices, para que servem, para depois passar para INNER JOIN. Percebe o quanto é difícil

fazer algo sem saber direito como tudo funciona? Por isso eu voto para que você estude mais sobre MySQL antes de dar continuidade

ao seu desenvolvimento.

 

Abraços.

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.