Habe eine etwas komplexere Abfrage, für dich ich einfach keine Lösung finde.
vereinfacht sieht die wichtige Tabelle (Probenergebnisse) so aus:
Probennr: integer;
Parameter: varchar;
Ergebnis: varchar;
Das sieht dann so aus:
Probennr - Parameter - Ergebnis
1 - ph-Wert - 5,02
1 - Wassergehalt - 52
1 - Kochsalzgehalt - 2,9
2 - ph-Wert - 9,15
2 - Kochsalzgehalt - 10
3 - ph-Wert - 7,03
3 - Wassergehalt - 35
3 - Kochsalzgehalt - 5
Jetzt möchte ich daraus eine Matrix machen. D.h. ich habe eine selektion der Proben, so dass hier die Probennummern 1 bis 3 abgefragt werden. Die Anzahl der Parameter sind absolut variabel. Probelem ist ausserdem, dass die Parameter in vielen Punkten die selben sind, aber nicht bei allen!
Nun benötige ich eine Abfrage die folgendes leistet:
Probennr - ph-Wert - Wassergehalt - Kochsalzgehalt
1 - 5,02 - 52 - 2,9
2 - 9,15 - ---- - 10
3 - 7,03 - 35 - 5
Problem ist, dass dies nur eine vereinfachte Version ist, z.t. können bei so einer Abfrage auch mal 100 Proben abgefragt werden oder anderenfalls auch mal insg. 30 Parameter. Die einzige Möglichkeit die ich habe wäre nach der Art:
Select p.Probennr,
(IFNULL(Select Ergebnis from Probenergebnisse PE where PE.Probennr=p.Probennr and Parameter='ph-Wert'),'---') ph-Wert,
(IFNULL(Select Ergebnis from Probenergebnisse PE where PE.Probennr=p.Probennr and Parameter='Wassergehalt'),'---') Wassergehalt,
(IFNULL(Select Ergebnis from Probenergebnisse PE where PE.Probennr=p.Probennr and Parameter='Kochsalzgehalt'),'---') Kochsalzgehalt
from Proben
where Probennr <= 3;
Das klappt ja auch, nur muss ich dann bei jeder Anfrage die Abfrage sehr umständlich "zusammenbauen" und sie wird auch SEHR lang, wenn es recht viele Parameter sind.
Ich hoffe jemand hat eine Idee, wie ich diese Abfrage etwas komfortabler erstellen kann. Danke auf jedenfall für jede Antwort
Chaosworld