SQL Abfrage: SUM Befehl für mehrere Tupel

Hallo liebe User!
habe eine Frage

gegeben sind drei Relationen
Programm(PrNr, PrBezeichnung);
zwischenModul(PrNr, MNr);
Modul(MNr, AnzZeilen);

ich möchte nun alle Tupel so auflisten, dass am Ende die PrBezeichnung und alle AnzZeilen, aller eines Programms enthaltene Module summiert werden.

ein Beispiel:
insert into zwischenModul (PrNr, MNr) values (1,1)
insert into zwischenModul (PrNr, MNr) values (1,2)
insert into zwischenModul (PrNr, MNr) values (2,3)

insert into Programm (PrNr, PrBezeichnung) values (1, 'PrAlpha)
insert into Programm (PrNr, PrBezeichnung) values (2, 'PrBeta)

insert into Modul (MNr, AnzZeilen) values (1,10)
insert into Modul (MNr, AnzZeilen) values (2,15)
insert into Modul (MNr, AnzZeilen) values (3,20)

das Ergebnis soll also so Aussehen:
PrBezeichnung | AnzZeilen
PrAlpha | 25
PrBeta | 20


bitte um schnelle Hilfe



test=*# select * from programm;
 prnr | prbezeichnung
------+---------------
    1 | PrAlpha
    2 | PrBeta
(2 rows)

test=*# select * from modul ;
 mnr | anzzeilen
-----+-----------
   1 |        10
   2 |        15
   3 |        20
(3 rows)

test=*# select * from zwischenmodul ;
 prnr | mnr
------+-----
    1 |   1
    1 |   2
    2 |   3
(3 rows)

test=*# select p.PrBezeichnung, sum(m.AnzZeilen) from Programm p left join zwischenModul z on (p.PrNr=z.PrNr) left join modul m on (z.mnr=m.mnr) group by 1;
 prbezeichnung | sum
---------------+-----
 PrBeta        |  20
 PrAlpha       |  25
(2 rows)



bitte um schnelle Hilfe

Das kostet aber extra. Wohin darf ich die Rechnung schicken?

Verteuernd für dich kommt hinzu, daß Du keine Code-Tags verwendet hast und dein SQL auch nicht Copy&Paste - fähig ist - es enthält etliche Fehler.


Andreas

Hahaha, wie wärs dann gleich mit einer Monatspauschale :smiley:
Mit joins kenn ich mich noch nicht aus.Ich hab mal folgendes Query geschrieben, dass mich zum gewünschten Ergebnis führt

SELECT PrBez,SUM(AnzZeilen)
FROM Programm p, Module m, enthaelt_Module em
WHERE m.MNr = em.MNr AND p.PrNr = em.PrNr
GROUP BY p.PrBez


Aber ich hab nun schon das nächste Problem anstehen,
wie kann ich eine Auswahlbedingung erstellen in der nur Tupel selektiert werden, die öfters als 2 mal vorkommen?
Müsste wohl mit count() gehen oder?

gegeben ist folgende Relation
VORNAME NACHNAME
Karl Fuchs
Karl Fuchs
Karl Fuchs
Karl Fuchs
Johann Müller
Alina Schlegl
Sandra Egger

rauskommen sollte also
VORNAME NACHNAME
Karl Fuchs