Re: Tabelle umgruppieren ?

From: Nicola Tiling <nti(at)w4w(dot)net>
To: Andreas Kretschmer <andreas(at)a-kretschmer(dot)de>, gunnar(dot)bluth(at)pro-open(dot)de
Cc: pgsql-de-allgemein(at)lists(dot)postgresql(dot)org
Subject: Re: Tabelle umgruppieren ?
Date: 2019-10-27 18:38:07
Message-ID: 2CAE34C7-1221-441C-9366-F50372A144D9@w4w.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Moin

Herzlichen Dank an Euch! Manchmal muss man gedanklich ja mal in eine andere Richtung gestupst werden!

Die Lösung mit dem „string_agg“ von dir, Andreas funktionierte auf Anhieb. Die mit dem Self join von dir Gunnar fast.

Hier mochte es das "ORDER BY a.switch“" in der ersten Zeile nicht. Außerdem referenzierten die Geräte auch auf sich selbst wenn noch kein Gegenüber erfasst ist.

Ich habe das jetzt so gemacht:

SELECT * FROM (
SELECT DISTINCT ON (a.kabel_nr)
a.kabel_nr
,a.switch AS switch_a
,a.port_nr AS port_nr_a
,b.switch AS switch_b
,b.port_nr AS port_nr_b
FROM netzwerkdoku a JOIN netzwerkdoku b
ON a.kabel_nr = b.kabel_nr AND a.switch != b.switch
) t
ORDER BY t.switch_a, t.port_a

Grüße
Nicola

> Am 27.10.2019 um 17:24 schrieb Andreas Kretschmer <andreas(at)a-kretschmer(dot)de>:
>
> das ginge z.B. so:
>
> test=*# select * from kabel ;
> switch | port | kabel_nr
> ----------+------+----------
> cisco1 | 4 | 12
> cisco1 | 5 | 13
> cisco1 | 6 | 14
> cisco2 | 6 | 14
> cisco2 | 48 | 10
> juniper1 | 8 | 12
> juniper1 | 9 | 13
> juniper1 | 42 | 10
> (8 rows)
>
> test=*# select kabel_nr, string_agg(switch || ' ' || port::text, ' <-> ') from kabel group by kabel_nr;
> kabel_nr | string_agg
> ----------+---------------------------
> 10 | cisco2 48 <-> juniper1 42
> 14 | cisco1 6 <-> cisco2 6
> 13 | cisco1 5 <-> juniper1 9
> 12 | cisco1 4 <-> juniper1 8
> (4 rows)
>
> test=*#
>

> Am 27.10.2019 um 13:16 schrieb Gunnar Nick Bluth <gunnar(dot)bluth(at)pro-open(dot)de>:
>
> Das dient ja auch zum "pivotieren"... hier brauchst du einen schlichten
> self-join.
>
> SELECT DISTINCT ON (a.kabel_nr ORDER BY a.switch)
> a.kabel_nr
> ,a.switch AS switch_a
> ,a.port_nr AS port_nr_a
> ,b.switch AS switch_b
> ,b.port_nr AS port_nr_b
> FROM netzwerkdoku a
> JOIN netzwerkdoku b
> ON a.kabel_nr = b.kabel_nr;
>
> sollte m.E. dein gewünschtes Ergebnis liefern.
>

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas Kretschmer 2019-10-27 21:13:50 Re: Tabelle umgruppieren ?
Previous Message Andreas Kretschmer 2019-10-27 16:24:48 Re: Tabelle umgruppieren ?