Problem mit 3 Tabellen verknüpfen -verschachtelter SELECT

marisa121

Neuer Benutzer
Beiträge
2
Hallo, nach mehreren Stunden Probieren wende ich mich hier mal ans Forum, vlt. stehe ich ja einfach auf dem Schlauch:
Verwendet wir ein MySQL Server

Ich habe 3 Tabellen:

Projekte:
- ID
- Name
- Status

Auftrag
-ID
- Projekte_ID (Foreign Key auf Projekte)
- Bezeichnung


Stempelzeiten
- ID
- Auftrag_ID (Foreign Key auf Auftrag)
- tstart
- stop


Nun möchte ich mit einem Query alle Projekte auflisten und dabei die Summe aus den einzelnen stempelzeiten ermitteln, z.B:


PROJEKT.NAME | Stunden
"Projekt 1" 5.5
"Projekt 2" 3.2
...



Ich bin mal soweit gekommen um die Sekunden aus den zwei Zeitstempeln tstart, tstop zu ermitteln:

SELECT DateDiff("s",[Stempelzeiten].[tstart],[Stempelzeiten].[tstop])
FROM Stempelzeiten

Ok, nun ist das Problem dass ich ja die Summe von diesem DateDiff haben will, und das aber dann nach Auftrag oder sogar nach Projekt sortiert:

SELECT SUM(DateDiff("s",[Stempelzeiten].[tstart],[Stempelzeiten].[tstop]))
FROM Stempelzeiten
WHERE Stempelzeiten.Auftrag_ID = Auftrag.ID AND Projekte.ID = Auftrag.Projekte_ID

Problem ist nur, dass ich dann die SUMME von allen Stempelzeiten bekomme...

Ich vermute das muss ich irgendwie mit einem verschachtelten SELECT ausführen?

Vielen Dank im Voraus!
 
Werbung:
also etwa so:

Code:
edb=# create table projekte (id int generated always as identity primary key, name text);
CREATE TABLE
edb=*# create table auftrag(id int generated always as identity primary key, projekt int references projekte, name text);
CREATE TABLE
edb=*# create table stempel(id int generated always as identity primary key, auftrag int references auftrag, start timestamp, stop timestamp);
CREATE TABLE
edb=*# select p.name, sum(s.stop - s.start) from projekte p left join auftrag a on (a.projekt=p.id) left join stempel s on (s.auftrag=a.id) group by p.name;
 name | sum 
------+-----
(0 rows)

edb=*#

mal ohne Daten...
 
Werbung:
Zurück
Oben