Ir para conteúdo

POWERED BY:

Arquivado

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

Gans

[Resolvido] SELECT em duas tabelas, com campo igual

Recommended Posts

Boa tarde pessoal, mais uma dúvida http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

 

Seguinte estou criando um sistema de usuários onde a chave de ativação deles fica em outra tabela, até ai consegui fazer a consulta. Porem as duas tabelas eu tenho o campo ID, e na hora de exibir eu precisava exibir o ID do usuário mas acaba mostrando o ID da tabela das chaves...Vou dar o exemplo..

 

Tabela: usuarios

ID - NOME - CHAVE

1 - Jose - 5

2 - João - 7

 

Tabela: chaves

ID - CHAVE - VENCIMENTO

5 - 14845 - 1254279600

7 - 54515 - 1254279600

 

O script que estou utilizando:

$time = $time();
$sql = mysql_query("SELECT usuarios.*,chaves.id,chaves.expira FROM usuarios, chaves WHERE usuarios.chave = chaves.id AND chaves.expira > '$time'");

O problema é que no WHILE o campo ID pega o ID da chava, e precisaria ser o ID do usuário...

 

Eu tenho uma solução em mente mas não é muito viável, que seria alterar o campo ID da tabela chaves para outro nome como UID apenas para diferenciar.

 

Alguém sabe se existe outra solução?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adiciona um ALIAS pra coluna na hora da consulta. Mais ou menos assim...

 

SELECT usuarios.*,chaves.id AS id_chave,chaves

Daí o id fica sendo o id da tabela usuarios e o outro id passa a ser id_chave.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei com o AS assim:

$time = $time();
$sql = mysql_query("SELECT usuarios.*,chaves.id AS id_chave,chaves.expira FROM usuarios, chaves WHERE usuarios.chave = id_chave AND chaves.expira > '$time'");

Mas não retorna resultado... (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mercado/public_html/site/resultado.php on line 159)

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

$sql = mysql_query("SELECT u.*, c.id,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, tentei o seu mas acontece a mesma coisa de antes, ele pega o ID da chave. Tem que mudar o campo do WHILE também?

while($l = mysql_fetch_array($sql)) { 
	$id = $l['id'];
}

estou usando assim, tentei $l['u.id']; mas da erro...

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, tentei o seu mas acontece a mesma coisa de antes, ele pega o ID da chave.

 

Opz, falha minha. Agora deve funcionar:

 

$sql = mysql_query("SELECT u.*, c.id 'idchave' ,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'");

while($l = mysql_fetch_array($sql)) {
$id = $l['id']; //id do usuário
$chave = $l[ 'idchave' ]; //id da chave
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também não deu...

WHERE usuarios.chave = chaves.id
A variável recebe o ID da chave...

 

Tentei também

WHERE usuarios.chave = chaves.id_chave
WHERE usuarios.chave = id_chave
Mas da o erro e não retorna nada...

 

Seria melhor mudar o ID da tabela Chave para outro nome então?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

João tentei desse jeito e ele retorna o idchave vazio... tentei usar o mesmo método mas no u.id 'iduser' e também retorna vazio...

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

João tentei desse jeito e ele retorna o idchave vazio...

 

Tenta o seguinte:

 

$sql = mysql_query("SELECT u.*, c.id 'idchave' ,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'");

$l = mysql_fetch_array($sql);

print_r( $l );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retorna o seguinte:

 

Array ( [0] => 1 [id] => 1 [1] => José [nome] => José [2] => 5 [chave] => 5 [3] => 5 [idchave] => 5 [4] => 1354279600 [expira] => 1354279600 )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué amigão, então está funcionado:

 

$sql = mysql_query("SELECT u.*, c.id 'idchave' ,c.expira FROM usuario u, chaves c WHERE u.chave = c.id AND c.expira > '$time'");

while ( $l = mysql_fetch_array($sql) ){
printf( 'O id da chave é: %d<br />O id do usuário é: %d<br />' , $l[ 'idchave' ] , $l[ 'id' ] );
}

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.