Hallo zusammen,
Ich kriege es irgendwie nicht hin eine bestimmte JPQL Query zu erstellen. Ich habe eine Tabelle/Klasse MeasuringParameter und eine Tabelle/Klasse MeasuringValue.
MeasuringValue hat die Felder id(int), measuringParameter(MeasuringParameter), value(Double) und date(Date). MeasuringParameter hat die Felder id(int) und name(String).
MeasuringParameter sind Messparameter welche definiert sind. MeasuringValue enthält die Messwerte die zum jeweiligen Messparameter gehören. Nun will ich eine Query erstellen welche mir für einen bestimmten Zeitraum die Messwerte bestimmter Messparameter ausgibt. Die Ausgabe sollte folgendermassen aussehen:
Die Zeilen sollten angezeigt werden, sobald einer der Messparameter einen Eintrag darin hat. es kann durchaus sein, dass eine Zeile nur Daten von einem Messparameter hat, die anderen Spalten sollen dann NULL haben.
Ich habe mal ein bisschen herumprobiert, aber ich komm nicht weiter. Hier meine Testquery.
ps: Wenn man einen select auf die Klasse/Tabelle MeasuringValue macht und nach date und measuringparameter.id abfragt, kriegt man höchstens ein ergebnis.
Ich kriege es irgendwie nicht hin eine bestimmte JPQL Query zu erstellen. Ich habe eine Tabelle/Klasse MeasuringParameter und eine Tabelle/Klasse MeasuringValue.
MeasuringValue hat die Felder id(int), measuringParameter(MeasuringParameter), value(Double) und date(Date). MeasuringParameter hat die Felder id(int) und name(String).
MeasuringParameter sind Messparameter welche definiert sind. MeasuringValue enthält die Messwerte die zum jeweiligen Messparameter gehören. Nun will ich eine Query erstellen welche mir für einen bestimmten Zeitraum die Messwerte bestimmter Messparameter ausgibt. Die Ausgabe sollte folgendermassen aussehen:
Code:
Datum | Messparameter1 | Messparameter2 ...
01.01.2008 00:00 | 19.87 | 42.11 ...
01.01.2008 00:01 | 21.43 | 46.21 ...
Die Zeilen sollten angezeigt werden, sobald einer der Messparameter einen Eintrag darin hat. es kann durchaus sein, dass eine Zeile nur Daten von einem Messparameter hat, die anderen Spalten sollen dann NULL haben.
Ich habe mal ein bisschen herumprobiert, aber ich komm nicht weiter. Hier meine Testquery.
SQL:
select mv.date, mv8, mv1, mv21 from
MeasuringValue mv,
(select mvi8.value from MeasuringValue mvi8 where mvi8.date=mv.date and mvi8.measuringParameter.id=8) mv8,
(select mvi1.value from MeasuringValue mvi1 where mvi1.date=mv.date and mvi1.measuringParameter.id=1) mv1,
(select mvi21.value from MeasuringValue mvi21 where mvi21.date=mv.date and mvi21.measuringParameter.id=21) mv21
where
(mv.measuringParameter.id=8 or mv.measuringParameter.id=1 or mv.measuringParameter.id=21 )
and mv.date between :start and :end
order by mv.date asc
ps: Wenn man einen select auf die Klasse/Tabelle MeasuringValue macht und nach date und measuringparameter.id abfragt, kriegt man höchstens ein ergebnis.
Zuletzt bearbeitet von einem Moderator: