Domanda

So I have a database where each record has a reference to a parent record in the same table (possibly null). Each record also has an 'active' flag that describes whether the single record is currently active.

I would like to end up with a flat list of records that have the following traits:

  • Is active
  • Contains no inactive ancestors

Instead of constructing the tree and doing a search to filter out the records I would like to accomplish this in SQL. Is there a way to join or aggregate to filter out the undesired records?

Nessuna soluzione corretta

Altri suggerimenti

You can achieve this using CTEs and recursive querying (if your database system supports it).

There is a SQL Server example here and a Postgres example here.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top