Hallo zusammen,
Ich komme bei einer Abfrage nicht weiter und weiss auch nicht, ob die überhaupt machbar ist und wie ich danach suchen soll.
Es sind 3 Tabellen:
Kalkulationen (ZUS_Calc, Kopf)
Positionen (ZUS_CalcPos, Relationen zu Kalkulationen und Positionstypen)
Positionstypen (ZUS_CalcTypen, keine Relationen)
In der Applikation werden zu einer Kalkulation immer alle Positionstypen angezeigt und es können Werte in die Tabelle Positionen gespeichert werden. Ich speichere jedoch nur die Positionen, die Werte enthalten. Das heisst, es gibt pro Kalkulation nicht für jeden Positionstyp eine Position.
Nun sollte das Ganze ausgewertet werden können und ich sollte für jede Kalkulation eine Zeile pro Positionstyp haben - mit oder ohne Werte. Für eine einzelne Kalkulation klappt dies wunderbar (zur Info: ich bin nicht ganz frei zum schreiben des SQL Statements, da dieses über eine Applikation generiert wird. Deshalb hier der Umweg mit "LEFT JOIN ZUS_CalcTypen.ImportNr = ZUS_CalcTypen.ImportNr"):
Wenn ich allerdings mehrere Kalkulationen auslese (ohne AND ZUS_Calc.PositionNrBAS = 309), klappt dies natürlich nicht mehr. Gibt es dafür eine schlaue Lösung? Hast jemand eine Idee?
Vielen Dank und Grüsse
Dani
Ich komme bei einer Abfrage nicht weiter und weiss auch nicht, ob die überhaupt machbar ist und wie ich danach suchen soll.
Es sind 3 Tabellen:
Kalkulationen (ZUS_Calc, Kopf)
Positionen (ZUS_CalcPos, Relationen zu Kalkulationen und Positionstypen)
Positionstypen (ZUS_CalcTypen, keine Relationen)
In der Applikation werden zu einer Kalkulation immer alle Positionstypen angezeigt und es können Werte in die Tabelle Positionen gespeichert werden. Ich speichere jedoch nur die Positionen, die Werte enthalten. Das heisst, es gibt pro Kalkulation nicht für jeden Positionstyp eine Position.
Nun sollte das Ganze ausgewertet werden können und ich sollte für jede Kalkulation eine Zeile pro Positionstyp haben - mit oder ohne Werte. Für eine einzelne Kalkulation klappt dies wunderbar (zur Info: ich bin nicht ganz frei zum schreiben des SQL Statements, da dieses über eine Applikation generiert wird. Deshalb hier der Umweg mit "LEFT JOIN ZUS_CalcTypen.ImportNr = ZUS_CalcTypen.ImportNr"):
Code:
SELECT ZUS_Calc.Version, ZUS_CalcTypen.Name, ZUS_CalcTypen.TypID, ZUS_CalcPos.TypID
FROM ZUS_Calc
LEFT JOIN ZUS_CalcTypen.ImportNr = ZUS_CalcTypen.ImportNr
LEFT JOIN ZUS_CalcPos ON ZUS_CalcTypen.TypID = ZUS_CalcPos.TypID
WHERE ZUS_Calc.Version > 999 AND ZUS_CalcTypen.NkSort > 0 AND ( ZUS_CalcPos.CalcID = ZUS_Calc.CalcID OR ZUS_CalcPos.CalcID IS NULL ) AND ZUS_Calc.PositionNrBAS = 309
ORDER BY ZUS_Calc.PositionNrBAS,ZUS_CalcTypen.NkSort
Wenn ich allerdings mehrere Kalkulationen auslese (ohne AND ZUS_Calc.PositionNrBAS = 309), klappt dies natürlich nicht mehr. Gibt es dafür eine schlaue Lösung? Hast jemand eine Idee?
Vielen Dank und Grüsse
Dani