
Zitat von
Alfred E. Neumann
vermutlich ist eine In-Sich-Verwendung in der Stückliste gemeint. Dagegen ist SQL wohl noch machtlos, ist eben keine richtige Sprache
Mit SQL können sehr wohl wechselseitige Abfragen gemacht werden, ohne dass man in eine Endlosschleife läuft.
Dazu muss lediglich die Anweisung CYCLE zwischen der CTE und der endgültigen SELECT-Anweisung eingefügt werden.
Hier ein Beispiel einer Auswertung mit wechselseitigen Beziehungen - Fahrpläne (ohne Endlos-Schleife).
Code:
With Destinations (Departure, Arrival, Connections, Costs)
as (Select Departure, Arrival,
Cast(Departure concat '->' concat Arrival as VarChar(200)),
Price
From Flights f
Where Departure ='Frankfurt'
Union All
Select d.Departure, f.Arrival,
Cast(d.Connections concat '->' concat f.Arrival as VarChar(200)),
Costs + Price
From Destinations d join Flights f on d.Arrival = f.Departure
Where d.arrival <> 'Frankfurt')
Cycle Arrival set cyclic_data to '1' Default '0'
Select Departure, Arrival, Connections, Costs
From Destinations
Where cyclic_data = '0'
order by departure, arrival
Birgitta
Bookmarks