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.
>
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 ? |