Ricardo S Postado Junho 24, 2012 Denunciar Share Postado Junho 24, 2012 (editado) 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. Editado Junho 24, 2012 por Ricardo S Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Junho 25, 2012 Denunciar Share Postado Junho 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). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ricardo S Postado Junho 25, 2012 Autor Denunciar Share Postado Junho 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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.
Editado por Ricardo SLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.