Consulta entre duas tabelas mysql [RESOLVIDO]

1. Consulta entre duas tabelas mysql [RESOLVIDO]

washington mendes da silva
wmendes

(usa Ubuntu)

Enviado em 19/01/2014 - 02:56h

Desculpa mas não achei o grupo do mysql.

tenho duas tabelas perguntas e respostas.

"perguntas"
pergunta_id, pergunta

"resposta"
resposta_id, pergunta_id, resposta

queria saber como exibo todas as respostas de suas respectivas perguntas.

tentei assim, mas as perguntas se repetem.

SELECT pergunta, resposta FROM perguntas p INNER JOIN respostas r ON
r.`pergunta_id` = p.`pergunta_id` GROUP BY pergunta

"pergunta 1"
resposta a
"pergunta 1"
resposta b

Preciso que exiba assim como abaixo...

"pergunta 1"
resposta a
resposta b
resposta c
resposta d

"pergunta 2"
resposta a
resposta b
resposta c
resposta d

Desde já grato.



  


2. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 19/01/2014 - 13:57h

wmendes escreveu:

Desculpa mas não achei o grupo do mysql.

tenho duas tabelas perguntas e respostas.

"perguntas"
pergunta_id, pergunta

"resposta"
resposta_id, pergunta_id, resposta

queria saber como exibo todas as respostas de suas respectivas perguntas.

tentei assim, mas as perguntas se repetem.

SELECT pergunta, resposta FROM perguntas p INNER JOIN respostas r ON
r.`pergunta_id` = p.`pergunta_id` GROUP BY pergunta

"pergunta 1"
resposta a
"pergunta 1"
resposta b

Preciso que exiba assim como abaixo...

"pergunta 1"
resposta a
resposta b
resposta c
resposta d

"pergunta 2"
resposta a
resposta b
resposta c
resposta d

Desde já grato.


SELECT perguntas.pergunta, respotas.resposta FROM perguntas, respostas WHERE perguntas.pergunta_id = respostas.pergunta_id

Só uma pergunta. Você declarou a chave primária da tabela perguntas como chave estrangeira da tabela respostas? E mais, nomeie direito as tabelas, você colocou perguntas e resposta (no singular) e deveria iniciar com letra maiúscula (por convenção).


3. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

washington mendes da silva
wmendes

(usa Ubuntu)

Enviado em 19/01/2014 - 23:05h

A chave primaria da tabela perguntas, esta como chave estrangeira na tabela respostas sim!
fiz a consulta que indicou e ainda esta listando assim..

pergunta 1
resposta a
pergunta 1
resposta b


e agora?


4. No mysql...

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/01/2014 - 09:37h

Parceiro, faz isso no php e não no mysql.

Primeiro que se a resposta não vier junto com a pergunta você não sabe de qual pergunta é aquela resposta. eu ainda puxaria o id da pergunta também.


Então deixa do modo que estava, ou melhor, deixa voltando assim:
id_pergunta1, pergunta1, resposta1
id_pergunta1, pergunta1, resposta2
id_pergunta1, pergunta1, resposta3
id_pergunta1, pergunta1, resposta4
id_pergunta1, pergunta1, resposta5


Faz essa exclusão da coluna, na exibição mesmo.

Algo do tipo, se voltar algum registro, guarda o valor da id_pergunta1, quando for diferente, constroi como se fosse uma nova pergunta, exibe a pergunta e depois os registros. Tenta construir, posta o código que a gente te ajuda.




5. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 20/01/2014 - 10:18h

wmendes escreveu:

A chave primaria da tabela perguntas, esta como chave estrangeira na tabela respostas sim!
fiz a consulta que indicou e ainda esta listando assim..

pergunta 1
resposta a
pergunta 1
resposta b


e agora?


Pelo menos o código ficou menos, rssss. Brincadeira. Tente com o UNION:


(SELECT perguntas.pergunta FROM perguntas) UNION (SELECT respotas.resposta FROM repostas WHERE perguntas.pergunta_id = respostas.pergunta_id);


Se bem que acho que também não vai dar certo, já que para cada linha de um SELECT deve haver uma linha para o outro. Mas tente.


6. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

washington mendes da silva
wmendes

(usa Ubuntu)

Enviado em 20/01/2014 - 12:30h

alex.castilho escreveu:

Parceiro, faz isso no php e não no mysql.

Primeiro que se a resposta não vier junto com a pergunta você não sabe de qual pergunta é aquela resposta. eu ainda puxaria o id da pergunta também.


Então deixa do modo que estava, ou melhor, deixa voltando assim:
id_pergunta1, pergunta1, resposta1
id_pergunta1, pergunta1, resposta2
id_pergunta1, pergunta1, resposta3
id_pergunta1, pergunta1, resposta4
id_pergunta1, pergunta1, resposta5


Faz essa exclusão da coluna, na exibição mesmo.

Algo do tipo, se voltar algum registro, guarda o valor da id_pergunta1, quando for diferente, constroi como se fosse uma nova pergunta, exibe a pergunta e depois os registros. Tenta construir, posta o código que a gente te ajuda.




Da pra saber qual resposta pertence a pergunta porque cada pergunta tem um id diferente, ai na tabela resposta tem um campo pergunta_id que é o id da pergunta!



7. Tipo

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/01/2014 - 13:13h

Você vai saber antes, mas se você elimar as colunas e apenas passar o resultado do modo como você quer, não tem como saber. Procure fazer do modo como eu disse. O grande pulo do gato é na hora de pular pra uma pergunta diferente.


8. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

washington mendes da silva
wmendes

(usa Ubuntu)

Enviado em 20/01/2014 - 13:29h

rei_astro escreveu:

wmendes escreveu:

A chave primaria da tabela perguntas, esta como chave estrangeira na tabela respostas sim!
fiz a consulta que indicou e ainda esta listando assim..

pergunta 1
resposta a
pergunta 1
resposta b


e agora?


Pelo menos o código ficou menos, rssss. Brincadeira. Tente com o UNION:


(SELECT perguntas.pergunta FROM perguntas) UNION (SELECT respotas.resposta FROM repostas WHERE perguntas.pergunta_id = respostas.pergunta_id);


Se bem que acho que também não vai dar certo, já que para cada linha de um SELECT deve haver uma linha para o outro. Mas tente.


é não funcionou não :(
tem que existir alguma maneira de listar isso direito kkk


9. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 20/01/2014 - 13:54h

wmendes escreveu:
é não funcionou não :(
tem que existir alguma maneira de listar isso direito kkk


Continuou retornando a mesma coisa ou deu erro? Talvez eu tenha apenas digitado errado, mas a sintax é essa, pesquise sobre UNION em SQL.


10. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

washington mendes da silva
wmendes

(usa Ubuntu)

Enviado em 20/01/2014 - 17:51h

rei_astro escreveu:

wmendes escreveu:
é não funcionou não :(
tem que existir alguma maneira de listar isso direito kkk


Continuou retornando a mesma coisa ou deu erro? Talvez eu tenha apenas digitado errado, mas a sintax é essa, pesquise sobre UNION em SQL.


ta quase dando certo! é assim

SELECT pergunta FROM perguntas UNION SELECT resposta FROM respostas

ai esta listado assim.. se eu tiver mais de uma pergunta e cada pergunta tiver 2 resposta fica assim

pergunta1
pergunta 2
reposta1
reposta2
reposta3
reposta4






11. Re: Consulta entre duas tabelas mysql [RESOLVIDO]

washington mendes da silva
wmendes

(usa Ubuntu)

Enviado em 21/01/2014 - 01:33h

Depois de muito pesar consegui!!!

Como tenho duas tabelas perguntas e respostas, após a consulta fiz um foreach pra cada um, ficou assim!

<?php
$pdo = conectar();
$pegaPergunta = $pdo->prepare("SELECT * FROM perguntas");
$pegaPergunta->execute();

foreach($pegaPergunta as $p):

?>
<table>
<label><?php $perguntaId = $p['pergunta_id']; echo $p['pergunta'];?></label><br />

<?php
$pdo = conectar();
$pegaResp = $pdo->prepare("SELECT * FROM respostas WHERE pergunta_id = '$perguntaId'");
$pegaResp->execute();

foreach($pegaResp as $r):
?>
<label><?php echo $r['resposta'];?></label><br/>
</table>
<?php
endforeach;
endforeach;

?>


Muito obrigado a todos os amigos que me ajudaram ou tentaram me ajudar! vlw pessoal!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts