Ricardo S Posted June 24, 2012 Report Share Posted June 24, 2012 (edited) Olá...Tenho uma tabela com os seguintes campos:id_do_paiid_do_filhoid_da_cidadeAo informar 2 cidades, preciso que retorne o(s) nome(s) do(s) filho(s) que tenha(m) visitado as duas cidades informadas, sendo os dois do mesmo pai.As duas cidades podem ter sido visitadas pelo mesmo filho ou por filhos diferentes, desde que do mesmo pai.Vários pais podem ter filhos que visitaram as duas cidades.Agrupar por id_do_pai.Como meu conhecimento é limitado, já tentei várias formas, mas não tive sucesso até o momento.A última tentativa foi assim:SELECT id_do_filho, id_do_pai FROM ( SELECT * FROM `tb_filhos_cidades` WHERE 'id_da_cidade' =5370 OR 'id_da_cidade' =3309 GROUP BY id_do_pai) AS prim HAVING COUNT(id_do_pai) = 2 Mas não retorna nada.Agradeço qualquer ajuda. Edited June 24, 2012 by Ricardo S Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted June 25, 2012 Report Share Posted June 25, 2012 Já tentou assim?SELECT id_do_pai, id_do_filho FROM `tb_filhos_cidades` WHERE `id_da_cidade` = 5370 OR `id_da_cidade` =3309 GROUP BY id_do_pai) HAVING COUNT(id_do_pai) > 1Obs.: Não confunda (') aspas com (`)crase. Crase é para identificar nomes de bancos, tabelas, campos e nomes de trigges, funções e procedures do MySQL. Aspas são usadas para identificar literais do tipo String (char, varchar e text). Quote Link to comment Share on other sites More sharing options...
0 Ricardo S Posted June 25, 2012 Author Report Share Posted June 25, 2012 Já tentou assim?SELECT id_do_pai, id_do_filho FROM `tb_filhos_cidades` WHERE `id_da_cidade` = 5370 OR `id_da_cidade` =3309 GROUP BY id_do_pai) HAVING COUNT(id_do_pai) > 1Obs.: Não confunda (') aspas com (`)crase. Crase é para identificar nomes de bancos, tabelas, campos e nomes de trigges, funções e procedures do MySQL. Aspas são usadas para identificar literais do tipo String (char, varchar e text).Obrigado Denis.... parece que este é o caminho mesmo.Porém agora, retorna apenas um registro de cada id_do_pai... acredito que seja por causa do GROUP BY. O correto seria 2 registro de cada id_do_pai, um para cada cidade, com seu respectivo id_do_filho. (não sei se me fiz entender)Eu não sabia que o GROUP BY suprimia os demais resultados. Pensei que agrupasse, mas mostrasse todos.Teria alguma alternativa para mostrar todos os registros ?Muito grato pela colaboração. Quote Link to comment Share on other sites More sharing options...
Question
Ricardo S
Olá...
Tenho uma tabela com os seguintes campos:
id_do_pai
id_do_filho
id_da_cidade
Ao informar 2 cidades, preciso que retorne o(s) nome(s) do(s) filho(s) que tenha(m) visitado as duas cidades informadas, sendo os dois do mesmo pai.
As duas cidades podem ter sido visitadas pelo mesmo filho ou por filhos diferentes, desde que do mesmo pai.
Vários pais podem ter filhos que visitaram as duas cidades.
Agrupar por id_do_pai.
Como meu conhecimento é limitado, já tentei várias formas, mas não tive sucesso até o momento.
A última tentativa foi assim:
SELECT id_do_filho, id_do_pai
FROM (
SELECT *
FROM `tb_filhos_cidades`
WHERE 'id_da_cidade' =5370 OR 'id_da_cidade' =3309 GROUP BY id_do_pai) AS prim
HAVING COUNT(id_do_pai) = 2
Mas não retorna nada.
Agradeço qualquer ajuda.
Edited by Ricardo SLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.