SQL : insert eine Spalte von einer Tabelle in einer anderen Tabelle

Alex2000

Benutzer
Beiträge
9
Hallo,

ich habe zwei Tabellen

Tabelle : "customer"
customer_ID
--------------
10308
10309
10310
......

Tabelle : "orders"
customer_ID order_nr
-------------- ----------
10308 556
10308 510
10309 420
10309 375
10309 390
10310 600

Nun möchte ich die Tabelle "customer" mit einer Spalte ergänzen "order_sum" , die die Summe der Orders (Bestellungen) pro Customer zeigt.
Also,
ALTER table customer ADD order_sum int ;

Nun möchte ich gern diese Ausgabe haben :

Tabelle : "customer"
customer_ID order_sum
-------------- ------------
10308 2
10309 3
10310 1
......

So, ich bräuchte was wie :

insert into customer (order_sum)
select count(*) from orders where ......

oder habt Ihr besseren Vorschlag ?

Vielen Dank im voraus.
Alex
 
Werbung:
schlechte Idee, weil redundand und auch nicht 'zuverlässig' wenn sich da was ändert (weitere Order z.B.).

Besser Du erzeugst eine VIEW: (sorry für den einen typo):

Code:
postgres=# create table customer(id int primary key, name text);
CREATE TABLE
postgres=# create table orders(custumer int references customer, order_nr int, wert int);
CREATE TABLE
postgres=# insert into customer values (1, 'kunde 1');
INSERT 0 1
postgres=# insert into customer values (2, 'kunde 2');
INSERT 0 1
postgres=# insert into orders values (1, 1, 10);
INSERT 0 1
postgres=# insert into orders values (1, 2, 20);
INSERT 0 1
postgres=# insert into orders values (2, 3, 30);
INSERT 0 1

postgres=# create view umsatz as select c.id, c.name, sum(o.wert) from customer c left join orders o on c.id=o.custumer group by 1,2;
CREATE VIEW
postgres=# select * from umsatz ;
 id |  name   | sum 
----+---------+-----
  2 | kunde 2 |  30
  1 | kunde 1 |  30
(2 rows)

postgres=#
 
Hallo,
danke für die vorgeschlagene Lösung. Leider brauche ich eine Lösung wie oben beschrieben, weil später noch andere Spalten dazu kommen und mit dem gleichen Prinzip gefüllt werden sollen. Trotzdem danke vielmals für die Mühe.
 
Werbung:
weil später noch andere Spalten dazu kommen und mit dem gleichen Prinzip gefüllt werden sollen.
Auch die kannst Du in die VIEW aufnehmen.

Ein Grundsatz ist: speicher niemals doppelte Informationen. Die einzige Ausnahme ist, wenn das Berechnen dieser Werte sehr viel Zeit beansprucht. Aber das kann man später immer noch verbessern.
 
Zurück
Oben