Mehrere Abfragen in einer

Sorry für den Titel aber mir ist im Moment kein besserer eingefallen.

Meine Problemstellung

Ich mache eine Statistische Auswertung und es wäre dafür ganz vorteilhaft wenn ich solch eine Abfrage hätte:

Abfrage 1 -> Ergebnis -> Spalte 1
Abfrage 2 -> Ergebnis -> Spalte 2
Abfrage 3 -> Ergebnis -> Spalte 3

Dies soll aber alles in einer AbfrageTabelle dargestellt werden. Also eine AbfrageTabell mit mehreren Abfragen. Jede Abfrage soll ihren Wert in einer eigenen Spalte zurückgeben.

Ich hab schon sowas versucht:

SELECT * FROM Tabelle AS A;
SELECT * FROM Tabelle AS B;
SELECT * FROM Tabelle AS C;

Aber so wird mir nur C angezeigt.

Achja jede Abfrage liefert immer nur einen Wert zurück SUM() Ergebnis

Hoffe sowas geht. Vielen Dank für die eventuellen Antworten.


Waldi

Ähm, alles von derselben Tabelle? Ich vermute mal und schlage vor:

test=*# select * from foo;
 id | a | b
----+---+---
  1 | 1 | 1
  2 | 1 | 2
  3 | 2 | 2
  4 | 2 | 3
  5 | 2 | 2
(5 rows)

test=*# select max(a) as max_a, max(b) as max_b, sum(a) as sum_a, sum(b) as sum_b from foo;
 max_a | max_b | sum_a | sum_b
-------+-------+-------+-------
     2 |     3 |     8 |    10
(1 row)

Oder von unterschiedlichen Tabellen?

test=*# select * from foo;
 id | a | b
----+---+---
  1 | 1 | 1
  2 | 1 | 2
  3 | 2 | 2
  4 | 2 | 3
  5 | 2 | 2
(5 rows)

test=*# select * from foo2;
 id | a  | b
----+----+---
  1 | 10 | 1
  2 | 10 | 2
  3 | 20 | 2
  4 | 20 | 3
  5 | 20 | 2
(5 rows)

test=*# select sum(foo.a), sum(foo2.a) from foo, foo2;
 sum | sum
-----+-----
  40 | 400
(1 row)

Andreas

keins von beiden. Systematisch ausgedrückt so was:

SELECT * FROM

SELECT COUNT(p.id) AS A FROM Person p INNER JOIN…WHERE x = 2;
SELECT COUNT(p.id) AS B FROM Person p INNER JOIN…WHERE x = 2;
SELECT COUNT(p.id) AS C FROM Person p INNER JOIN…WHERE x = 2;

oder so besser zu verstehen?

SELECT * FROM
Abfrage 1 AS a
Abfrage 2 AS b
Abfrage 3 AS c

a,b,c sollen die Spaltennamen darstellen

Mit meinen ersteren Beispielen:

test=*# select foo.*, bar.* from (select sum(a) as a from foo) foo, (select sum(b) as b from foo2) bar;
 a | b
---+----
 8 | 10
(1 row)

Andreas

Es funktioniert. Vielen, Vielen Dank

Fein. War/ist allerdings im Prinzip dasselbe wie in meinem ersten Beitrag, zweites Beispiel. Egal.

Andreas