
Zitat von
karl_ha
Hi,
ich nehme an, die Frage lässt sich (fast) jeder DB zuordnen.
Ich habe 3 Tabellen:
Los (id, name)
Verteiler (id, los_id, name)
Hausanschluss (id, los_id, name)
Ich möchte wissen, wie viele Verteiler und Hausanschlüsse in einem Los sind.
Die Hausanschlüsse und Verteiler getrennt zu erfassen ist kein Problem, wie aber wenn ich beide Summen haben möchte? Hier der Code, wie ich die Anzahl der Verteilersumme pro Los erhalte.
Code:
SELECT
verteiler.los_id AS "LOS",
count (los.id) AS "Anzahl Verteiler"
FROM
los,
verteiler
WHERE
los.id = verteiler.los_id
GROUP BY
verteiler.los_id Code:
test=*# select * from los;
id | name
----+------
1 | los1
2 | los2
(2 rows)
test=*# select * from verteiler ;
id | los_id | name
----+--------+--------------
1 | 1 | verteiler1_1
2 | 1 | verteiler1_2
3 | 2 | verteiler2_1
(3 rows)
test=*# select * from hausanschluss ;
id | los_id | name
----+--------+---------
1 | 1 | haus1_1
2 | 1 | haus1_2
3 | 1 | haus1_3
4 | 2 | haus2_1
(4 rows)
test=*# select foo.id, foo.name, foo.verteiler_anzahl, count(h) as haus_anzahl from (select l.id, l.name, count(v) as verteiler_anzahl from los l left join verteiler v on (l.id=v.los_id) group by l.id, l.name) foo left join hausanschluss h on (foo.id=h.los_id) group by foo.id, foo.name, foo.verteiler_anzahl;
id | name | verteiler_anzahl | haus_anzahl
----+------+------------------+-------------
1 | los1 | 2 | 3
2 | los2 | 1 | 1
(2 rows)
Das ganze soll natürlich zügig laufen können. Ist es sinnvoll, hier einen Trigger zu verwenden, der die Summe der Verteiler/Hausanschlüsse in die Tabelle Los schreibt? (Eine andere Frage, ich weiß)
Gruß Karl
Ja, das ist eine andere Frage...
Andreas
Lesezeichen