HILFE Komplizierte Abfrage

Hallo,

ich habe es zur Aufgabe eine - für mich sehr komplizierte - Abfrage zu formulieren und tue mich dabei echt schwer.
Ich hänge jetzt schon mehrere Tage an diesem Problem und komme einfach nicht weiter.
Könnt ihr mir bitte weiterhelfen?

Es geht um folgendes:
Komplizierte Abfrage.jpg
Mit freundlichem Gruß

Formuliere die Aufgabe bitte so, daß wir es nicht schon schwer haben, diese zu verstehen.

t_piece.key (double + ist Verbindung zu t_value.key)
t_piece.data4 (text)

t_value.time (timestamp)
t_value.key (double + ist Verbindung zu t_piece.key)
t_value.characteristicid (integer references t_characteristic(id)
t_value.value (double)

t_characteristic.id (integer + ist Verbindung zut_value.characteristicid)
t_characteristic.name (text)

Die Anfrage soll folgednes Ausgeben:

In den Spaltenköpfen sollen die verschiedenen Werte von t_piece.data4 stehen (je nachdem, wieviele verschiedene Werte es gibt).
In den Zeilen sollen 6 bestimmte Werte von t_characteristic.name die in der DB existieren aufgelistet werden.
In den Datenfeldern soll gezählt werden wie oft in t_value.value ein Wert steht, der UNGLEICH 1 ist.

Ich habe es bisher so versucht, bin aber auf dem Weg nicht weitergekommen:
(t_value.time muss auf jeden Fall mit in der WHERE-Klausel stehen)


select t_characteristic.name as "Name", count(value) as "PP"
from t_value 
		join t_piece on t_value.key=t_piece.key 
		left join t_characteristic on t_characteristic.id = t_value.characteristicid
where 
t_characteristic.name in ('Name1','Name2','Name3','Name4','Name5','Name6')
and t_piece.data4 = 'PP'
and t_value.time >= '2012-03-01 00:00:00'
and t_value.time <= '2013-03-22 00:00:00'
and t_value.value <> 1
group by t_characteristic.name
order by t_characteristic.name

Das ist dabei rausgekommen:

Das sehr schlechte daran:
wenn in t_value.value noch keine Werte zu dem t_characteristic.name existieren (im Beispiel ‘Name6’), wird es gar nicht mit angezeigt.
Es wäre notwendig dass dann eine 0 bei ‘Name6’ steht.

Es gibt in Contrib ein Modul ‘tablefunctions’ (oder so ähnlich), das bringt da einiges mit. Allgemein aber ist das keine gute Idee.

Sind für ‘Name6’ auch die richtigen Werte in ‘t_piece’ hinterlegt?

Für die Pivot-Auswertung würde ich das schon erwähnte tablefunc-Modul nutzen.

CU Uwe

In t_piece.data4 steht entweder nichts, oder einer der folgdnen Werte:
‘PP’
‘SA’
‘P’
‘G’
‘K’