Ich habe eine Tabelle die wie folgt aussieht:
fk_nodename | fk_adaptername | port
------------------±-----------±-----
node102.pnet.ch | adapter01 | 2
node102.pnet.ch | adapter02 | 2
node202.pnet.ch | adapter01 | 3
node202.pnet.ch | adapter02 | 3
node101.pnet.ch | adapter01 | 4
node201.pnet.ch | adapter01 | 5
Nun möchte ich eine View kreieren, die mir folgende Darstellung macht:
fk_nodename | fk_adaptername1 | fk_adaptername2 | port
------------------±------------±------------±-----
node101.pnet.ch | adapter01 | | 4
node102.pnet.ch | adapter01 | adapter02 | 2
node201.pnet.ch | adapter01 | | 5
node202.pnet.ch | adapter02 | adapter01 | 3
Mit:
CREATE VIEW test AS
SELECT DISTINCT l1.fk_nodename ,l1.fk_adaptername as fk_adaptername1 ,l2.fk_adaptername as fk_adaptername2,l1.port
FROM config l1 LEFT JOIN config l2 ON (l2.fk_nodename = l1.fk_nodename and l2.fk_adaptername <> l1.fk_adaptername);
Möcht noch anmerken, daß DISTINCT ON nicht im SQL-Standard definiert ist, das ist eine (von vielen) nützlichen Erweiterungen, die PostgreSQL bietet. Aber SQL an sich macht schon Spaß, und wenn man dann auch noch PG hat…
Andreas, back from Chemnitz, war ein tolles Event mal wieder…