I feel that this is likely a common problem, but from my google searching I can’t find a solution quite as specific to my problem.
I have a list of Organizations (table) in my database and I need to be able to run queries based on their hierarchy. For example, if you query the highest Organization, I would want to return the Id’s of all the Organizations listed under that Organization. Further, if I query an organization sort of mid-range, I want only the Organization Id’s listed under that Organization.
What is the best way to a) set up the database schema and b) query? I want to only have to send the topmost Organization Id and then get the Id’s under that Organization.
I think that makes sense, but I can clarify if necessary.
One simple way is to store the organization’s parentage in a text field, like:
SALES-EUROPE-NORTH
To search for every sales organization, you can query on SALES-%. For each European sales org, query on SALES-EUROPE-%.
If you rename an organization, take care to update its child organizations as well.
This keeps it simple, without recursion, at the cost of some flexibility.