# Frage bei einer SQL Query



## beta20 (28. Apr 2020)

Hallo,

ich habe eine Frage zu einer SQL Query, vllt stehe ich auch gerade auf dem Schlauch...

a) Ich habe Kategorien (Category) und Files.
Ein File gehört zu einer Category. Eine Category kann ein Elternknoten haben (CategoryParentFK)

*Category*
- ID
- Name
- CategoryParent_FK

*File*
- ID
- Path
- Category_FK

Nun habe ich bspw. folgende Kategorien:
1. Auto
1.1 Rad
1.1.1. Reifen
1.1.1.1. Reifenschraube

*File:*
1. File und gehört zu "Reifenschraube".

Meine Frage ist nun: wie bekomme ich alle Files, die direkt zur obersten Kategorie gehören (Auto).
Also wie ich alle Files zu "Reifenschraube" bekomme, ist einfach:
SELECT * FROM File f WHERE f.category.id = <ID von Reifenschraube>

Wie muss das SQL aber lauten, damit ich das File für "Auto" bekomme. Also sprich alle Files, die unter sämlichen Kategorien (Kinder) von "Auto" sind.

Danke für jede Hilfe


----------



## thecain (28. Apr 2020)

Mit einem rekursiven Query sollte das gehen.

Hier ein Beispiel dass ich auf die schnelle gefunden habe und dwiner Frage recht ähnlich scheint









						Simplifying Recursive SQL Queries
					

How can we write pure SQL queries that operate on hierarchical, self-referential tables? Recursive Common Table Expressions can be a great tool.




					haughtcodeworks.com


----------



## beta20 (28. Apr 2020)

ah danke, habe ich nicht gekannt.... Hoffe das geht das auch bei JPA?


----------



## LimDul (28. Apr 2020)

Oracle wäre CONNECT BY. Ich befürchte das geht in JPA nicht wirklich direkt oder performant ohne Native Query


----------

