Ir para conteúdo

POWERED BY:

Arquivado

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

Ariel

Relacionar tabelas

Recommended Posts

Ola....

 

preciso de uma ajuda aqui... estou com um problema.... veja o meu caso:

 

estou criando um mini sistema de curriculum. Onde tem o cadastro dos curriculums, e o cadastro das vagas.

sao 3 tabelas (ate agora)

1- curriculum

2- empresa

3- vaga

 

Estou tentando fazer uma consulta para exibir todas as vagas cadastradas, montrando alguns campos principais da tabela vaga, e tambem indicando de que empresa é.

 

Para isso, criei na tabela empresa um campo autonumeracao chamado: idemp

Criei tambem na tabela vaga um campo com o nome nome para que possa identificar de qual empresa é a vaga: idemp

 

O meu problema é que, quando executo a consulta, aparece a ID da empresa corretamente em cada quadro da vaga, porem, no local do nome da empresa, ao inves de aparecer o nome da respectiva empresa q a ID está relacionada, aparece o nome da empresa da ultima vaga cadastrada... :neutral:

 

Vou postar parte do codigo q estou a usar, e por favor, se possivel você poder me ajuda a resolver essa parada...

 

<?phpinclude("conexao.php");mysql_connect($host,$user,$pass) or die ("Impossivel Conectar ao Servidor MySQL");mysql_select_db($db) or die ("Impossivel Abrir Database");$sql = "SELECT * FROM vagas ORDER BY data desc";$rs = mysql_query($sql) or die ("Não foi possivel efetuar a consulta");$sql2 = "SELECT idemp, nomeempresa FROM empresa";$rs2 = mysql_query($sql2) or die ("Não foi possivel efetuar a consulta2");while ($linha = mysql_fetch_array($rs)) {$idvaga = $linha["idvaga"];$data = $linha["data"];$catcargo = $linha["catcargo"];$loginempresa = $linha["loginempresa"];$titulocargo = $linha["titulocargo"];$atribcargo = $linha["atribcargo"];$sexocargo = $linha["sexocargo"];$faixaetariacargo = $linha["faixaetariacargo"];$escolaridadecargo = $linha["escolaridadecargo"];$cursoscargo = $linha["cursoscargo"];$idiomacargo = $linha["idiomacargo"];$oinfocargo = $linha["oinfocargo"];$salariocargo = $linha["salariocargo"];$descsalariocargo = $linha["descsalariocargo"];$benecargo = $linha["benecargo"];$idemp = $linha["idemp"];while ($linha2 = mysql_fetch_array($rs2)) $nomeempresa = $linha2["nomeempresa"];echo "parte html";}mysql_free_result($rs);mysql_close();?>

Se alguem puder me ajudar a corrigir isso... estarei grato. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao relacionou nenhuma tabela

 

pra isso vou dar um exemplo simples pra você entender

 

tabela produto

 

id_produto

nome_produto

fk_categoria

 

 

tabela categoria

 

id_categoria

categoria

 

viu que na tabela produto eu gravo o id da categoria isso ja esta me mostrando qual é a categoria e estou relacionando as tabelas

 

e pra listar você faz assim:

 

SELECT * FROM produto,categoria WHERE produto.fk_categoria = categoria.id_categoria

 

deu pra entender +- ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu eu coloquei sim um campo igual pra relacionar.Porem, eu usei o mesmo nome.na tabela empresa:idempna tabela vagas tbm tem essa variavel:idempao se incluir a vaga, é gravado corretamente dentro da tabela vagas a ID da empresa, e quando eu faço a consulta tbm.Somente estou tendo problema pra mostrar o nome da empresa, puxando dessa ID q está gravada na tabela vagas...---Mudei a instrucao SQL pra isso:$sql = "SELECT * FROM vagas,empresa ORDER BY data desc WHERE vagas.idemp = empresa.idemp";$rs = mysql_query($sql) or die ("Não foi possivel efetuar a consulta");mas nao funcionou. Retorna que nao foi possivel efetuar a consulta.oq fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ai Ariel?

 

 

tente fazer isso.

 

PHP [/tr][tr]

$sql = "SELECT * FROM vagas INNER JOIN empresa on (vagas.idemp = empresa.idemp) ORDER BY data desc ";

$rs = mysql_query($sql) or die ("Não foi possivel efetuar a consulta");

 

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando um ORDER antes do WHERE...

 

$sql = "SELECT * FROM vagas,empresa ORDER BY data desc WHERE vagas.idemp = empresa.idemp";$rs = mysql_query($sql) or die ("Não foi possivel efetuar a consulta");

Tente fazer assim:

$sql = "SELECT * FROM vagas,empresa WHERE vagas.idemp = empresa.idemp ORDER BY data desc ";$rs = mysql_query($sql) or die ("Não foi possivel efetuar a consulta");

=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

fitinge , maubiasotto ... tentei das 2 formas conforme recomendaram... mas ainda retorna erro "nao foi possivel..."eu ja havia tentado usar o inner join... tbm sem sucesso... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

é simples cara:

 

mysql_query("SELECT * FROM vagas,empresa WHERE vagas.idemp = empresa.idemp");

 

essa sql vai selecionar tudo da tabela vagas e empresa que for idemp = idemp

 

é impossivel da erro

 

a nao ser se nao tiver idem iguais cara

 

testa primeiro no proprio mysql essa consulta ou no phpmyadmin dai você ve o que pode ta errado

Compartilhar este post


Link para o post
Compartilhar em outros sites

BOM... funcionou... porem... eu queria organizar por ondem de data... pois tem um campo q eu coloquei que quando se faz o cadastro,grava a data... porem... se eu adicionar nessa ultima sintaxa a instrucao "ORDER BY data desc" .. dá erro.. diz q nao foi possivel executar..será q é possivel fazer essa organizacao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem saberia uma sintaxe correta a ser usada ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende de que tabela tenha o campo data:

 

Na tabela VAGAS:

PHP [/tr][tr]mysql_query("SELECT * FROM vagas,empresa WHERE vagas.idemp = empresa.idemp ORDER BY vagas.data DESC"); [/tr]

 

 

Na tabela EMPRESA

PHP [/tr][tr]

mysql_query("SELECT * FROM vagas,empresa WHERE vagas.idemp = empresa.idemp ORDER BY empresa.data DESC");

[/tr]

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.