Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, tenho um sistema que possui as duas tabelas:
house (
int id,
varchar house_des ; }
e outra
house_son (
int id_house_son (fk para table_house, unique)
int id_house_father (fk para table_house) )
A questão é, pode se registrar várias casas, e casas podem ser casas afiliadas de casas pais, porém uma casa afiliada só pode ser afiliada a uma casa pai, e casa pai nao é afiliada de nenhuma outra casa; considerando na house:
Id | house description
1 Casa de Sagitário
2 Casa de Gêmeos
3 Casa de Urso
4 Casa de Aguia
5 Casa de Cérbero
6 Casa das Aguas
7 Casa de Agiotas
8 Casa de Exterminio
e na house_son
id_house_son | id_house_father
3 1
4 1
5 2
6 2
7 8
Teriamos a Casa de Gêmeos e Sagitários como principais, e a classe de Urso e Aguia como filhas de Sagitario e a de Cerbero e das Aguas como filha de Gemeos, e a de Exterminio como filial de de Agiotas
Até então eu efetuava uma busca que contemplava apenas uma busca pela casa pai, no caso:
SELECT house.id as idHouse, house.house_des as desHouse,
GROUP_CONCAT(
outro.house_des
ORDER BY outro.house_des ASC
SEPARATOR ', ') as desSons
FROM house h
left outer JOIN house_son son
ON h.id = son.id_house_father
left outer JOIN house outro
ON son.idt_id_house_son = outro.id
WHERE (h.id NOT IN (son.id_house_son))
AND
(h.house_des like "%sagi%" )
GROUP BY h.id
ORDER BY desHouse asc
e isso me retorna o resultado:
idHouse | desHouse | desSons
1 Casa de Sagitario Casa de Aguia, Casa de Urso
porém agora preciso buscar nao apenas pelas casas pais, mas pelas filiais também, e quando pesquisar por Casa de Aguia por exemplo, nao retornar apenas sua casa pai, mas sim sua casa Pai e todas filhas do Pai, ou seja, buscar por "ag" e ter como resultado:
idHouse | desHouse | desSons
1 Casa de Sagitario Casa de Aguia, Casa de Urso
2 Casa de Gemeos Casa das Aguas, Casa de Cerbero
7 Casa de Agiotas Casa de Exterminio
*negrito apenas para mostrar o que foi buscado
Alguma ideia ? Estou bem perdido nesse fluxo "reverso"
Carregando comentários...