Frage

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?

Keine korrekte Lösung

Andere Tipps

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top