Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem SQL dotaz

Dobrý den,
nevím si rady s komplikovaným dotazem.

tabulka: tab1

ID     ID_RODICE     VIDITELNOST
1      NULL          1
2      1             0
3      1             1
4      1             1
5      2             1
6      2             1
7      6             1
8      7             1
9      5             1
10     5             1
Je to takový strom, kde řádek s ID 1 je kořen. ID_RODICE je ID předchozího rodičovského uzlu.

Potřeboval bych dotaz, který vybere jen tu viditelnou část. Takže když uzel s ID 2 je neviditelný, tak se nebudou vybírat ani jeho potomci a potomci jeho potomků atd.
V tomto případě by tedy měly být výsledkem pouze řádky s ID 1, 3, 4.

Mám něco takového:
SELECT T1.* from tab1 T1 WHERE T1.VIDITELNOST = 1 AND EXISTS (select T2.id from tab1 T2 WHERE T2.VIDITELNOST = 1 AND T1.id_rodice = T2.id)
Ale nefunguje to úplně správně.

Moc díky za každý nápad.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny