Erro com sql.[RESOLVIDO]

Pessoal estou com uma duvida com o inner join, tenho uma tabela cad_clientes que nessa tabela eu tenho 2 campos referenciados a uma mesma tabela que é cad_cidades, eu ou seja um campo chamado cid_Atual e outro cid_Anterior como que eu faço pra obter esses dois resultados da minha tabela cad_cidades?

olá leandro-maanaim,

vÊ se ajuda:

http://db.apache.org/derby/docs/dev/pt_BR/ref/rrefsqlj35034.html
http://dev.mysql.com/doc/refman/4.1/pt/join.html
http://dev.mysql.com/doc/refman/5.0/en/join.html

basicamente vc tem q ter 1 atributo em comum nas tabelas,

SELECT * FROM cad_cidades INNER JOIN cad_clientes
ON  cad_cidades.cid_Atual = cad_clientes.cid_Atual;

boa sorte,

Ajudou muito, mais eu queria fazer como se foce duas consulta entendi? quero pegar os dois valores.

…tem como postar a estrutura das tabelas?

Seria isso?

Nome da 1º Tabela.: create table Cad_Cidades (cid_codigo integer not null,cid_Nome varchar(40)),constraint pk_cidades primary key(cid_codigo);

Nome da 2º Tabela.: create table Cad_Clientes (cli_Codigo integer not null,cli_Nome varchar(40),cli_Cidade_Atual integer ,cli_Cidade_Anterior integer) ,constraint pk_cliente primary key(cli_codigo),constraint fk_cliente foreign key(cli_Cidade_Atual) references Cad_Cidades(cid_Codigo),constraint fk_cliente02 foreign key(cli_CidadeAnterior) references Cad_Cidades(cid_Codigo);
SELECT * 
   FROM cad_cidades c1
  INNER JOIN cad_clientes  ON  c1.cid_Atual = cad_clientes.cid_Atual  
  INNER JOIN cad_cidades c2 ON c2.cid_Anterior = cad_cliented.cid_Anterior

Ou faz 2 vezes a consulta e usa um union tipo

Select codCidadeAtual From .... Inner ... Union Select codCidadeAnterior From ... Inner ...

Esse c1 e c2 é oque?

Chama-se “alias” se não me engano … ao invés de ter que escrever toda vez o nome da tabela cad_cidades utiliza apenas c2 ( ou qualquer outro nome, tipo XuXu )
Pode-se então utilizar quantas vezes quiser a mesma tabela c1,c2,c3… depois pra pegar a coluna, apenas coloca c2.cidAtual ex:

SELECT c1.cidAtual, c2.cid_anterior, *
   FROM cad_cidades c1
  INNER JOIN cad_clientes  ON  c1.cid_Atual = cad_clientes.cid_Atual  
  INNER JOIN cad_cidades c2 ON c2.cid_Anterior = cad_cliented.cid_Anterior

Acho que não fui sucintamente claro hehehe… manda ai o que vc não entender.

Cara esses “Alias” ai que vc ta me alando ta me rebentando kakakakakka ta confundido minha memoria rsrs escreve normal ai pa nao ta dando certo nao.rsrsrs

Cara so lembrando que cli_cidAtual e cli_cid_Anteior está na minha tabela cad_Clientes.

Sem eles fica difícil ! em SQL usa-se direto ! um exemplo pra você entender, executa apenas esse select

 Select X.cid_codigo, X.cid_Nome From Cad_Cidades X 

Agora executa todo, tens que dar certo.

Select c1.cid_nome As 'Cidade Atual', c2.cid_Anterior, cli.nome As nomeCliente
  From Cad_Clientes cli
 Inner Join Cad_Cidades c1 On (c1.cid_codigo = cli.cli_Cidade_Atual)
 Inner Join Cad_Cidades c2 On (c2.cid_Codigo = cli.cli_Cidade_Anterior)

Agora não tem pq não dar certo !! boa sorte.

Ta osso… Fiz isso tudo e nao da certo mano
Select c1.cid_nome As ‘Cidade Atual’, c2.cid_Anterior, cli.nome As nomeCliente
From Cad_Clientes cli
Inner Join Cad_Cidades c1 On (c1.cid_codigo = cli.cli_Cidade_Atual)
Inner Join Cad_Cidades c2 On (c2.cid_Codigo = cli.cli_Cidade_Anterior)

[quote=leandro-maanaim]Ta osso… Fiz isso tudo e nao da certo mano
Select c1.cid_nome As ‘Cidade Atual’, c2.cid_Anterior, cli.nome As nomeCliente
From Cad_Clientes cli
Inner Join Cad_Cidades c1 On (c1.cid_codigo = cli.cli_Cidade_Atual)
Inner Join Cad_Cidades c2 On (c2.cid_Codigo = cli.cli_Cidade_Anterior)[/quote]

Que erro esta dando quando você executa? só por curiosidade qual banco é?

MYSQL 4.1
erro : unknown column ‘c1.cid_Anterior’ in ‘field list’

[quote=leandro-maanaim]MYSQL 4.1
erro : unknown column ‘c1.cid_Anterior’ in ‘field list’[/quote]

[code]

Select c1.cid_nome As ‘Cidade Atual’, c2.cid_nome As ‘Cidade Anterior’, cli.nome As nomeCliente
From Cad_Clientes cli
Inner Join Cad_Cidades c1 On (c1.cid_codigo = cli.cli_Cidade_Atual)
Inner Join Cad_Cidades c2 On (c2.cid_Codigo = cli.cli_Cidade_Anterior) [/code]

Tenta agora manolo.

agora deu erro no unknown column ‘cli.nome’ in ‘field list’

:S

Ta Osso Juvenal rsrsrs.

[quote=leandro-maanaim]agora deu erro no unknown column ‘cli.nome’ in ‘field list’

:S[/quote]

Troca o “Select cli.nome” pelo nome da coluna da sua tabela Cad_CLiente ou seja cli.cli_Nome

Confere se os nome que eu coloquei no código esta igual aos nome da sua tabela…

caso aconteça mais algum erro.

Mais mastigado !!


Select c1.cid_nome As 'Cidade Atual', c2.cid_nome As 'Cidade Anterior', cli.cli_nome As nomeCliente   
From Cad_Clientes cli   
Inner Join Cad_Cidades c1 On (c1.cid_codigo = cli.cli_Cidade_Atual)   
Inner Join Cad_Cidades c2 On (c2.cid_Codigo = cli.cli_Cidade_Anterior)  

Ops…Agora de certo rsrs Um valew pela paciencia cara rsrs. posso fechar o post ou agente vai bater mais um papo?

Só se tu for me apresentar sua irmã … brincadeira !!!

Pode fechar sim, disponha…