Hallo Andreas,
On Thu, Nov 11, 2004 at 08:27:54PM +0100, Andreas Kretschmer wrote:
Moin,
ich habe eine Tabelle t1:
id1 | id2 [...]
Ich brauche eine t2:
id1 | id2 [...]
Also: je eine Zeile f?r alle Werte von id1, id2, also Anzahl(id1) * Anzahl(id2) Zeilen.
Gibt es einen eleganteren Weg, als mittels plpgsql durch die Tabelle zu watscheln und INSERTs zu bilden? Irnkwie hab ich grad einen Denk-Aussetzer...
Ja.
Ziel ist, falls das interessiert, eine Kreuz-Tabelle. Dazu gibt es im contrib von PostgreSQL eine Funktion, nur brauche ich dazu eine Hilfstabelle in dieser Form.
Brauchst Du nicht, es geht auch mit Sub-Select. Oder View.
insert into t2 (id1,id2) select i1,i2 from (select distinct id1 as i1 from t1) as s1, (select distinct id2 as i2 from t1) as s2;
(schon getestet mit postgresql 7.4.2-4) Der Trick ist der Self-Join ueber die Sub-Queries. Bei vielen Datensaetzen in t1 koennte je ein Index ueber id1 und id2 die Performance verbessern.
Holger