View durchnummerieren

Wolf-Tilmann

Aktiver Benutzer
Beiträge
35
Hallo zusammen,

sicherlich könnt Ihr mir hier weiterhelfen.

Über mehrere Tabellen hinweg baue ich mir Views zusammen.
In diesen Views hätte ich gerne so etwas wie eine ID je Zeile.

Ist das irgendwie machbar?

Ich habe zwar gegooglet, aber leider nichts gefunden.

Vielen Dank
Wolf-Tilmann
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.150
Hallo zusammen,

sicherlich könnt Ihr mir hier weiterhelfen.

Über mehrere Tabellen hinweg baue ich mir Views zusammen.
In diesen Views hätte ich gerne so etwas wie eine ID je Zeile.

Ist das irgendwie machbar?

Ich habe zwar gegooglet, aber leider nichts gefunden.

Vielen Dank
Wolf-Tilmann

Google hätte row_number() sagen können. Scheinbar mag Google Dich nicht...
 

Wolf-Tilmann

Aktiver Benutzer
Beiträge
35
Von SQLLite war in der Frage keine Rede.

uuups

Ich habe jetzt das Problem über SQL mit der Keule gelöst.
den View lasse ich wie er ist - also OHNE laufende Nummer.
Dann habe ich eine Tabelle angelegt mit einer Zelle
lftNr INTEGER PRIMARY KEY
Über einen Trigger lasse ich dann, wenn in der Quelltabelle etwas geändert wird
1. DELETE FROM Tabelle
2. INSERT INTO Tabelle (values) SELECT NULL, ... FROM View

Das Funktioniert ist aber absolut nicht elegeant.

Schönen Abend
Wolf-Tilmann
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.150
uuups

Ich habe jetzt das Problem über SQL mit der Keule gelöst.
den View lasse ich wie er ist - also OHNE laufende Nummer.
Dann habe ich eine Tabelle angelegt mit einer Zelle
lftNr INTEGER PRIMARY KEY
Über einen Trigger lasse ich dann, wenn in der Quelltabelle etwas geändert wird
1. DELETE FROM Tabelle
2. INSERT INTO Tabelle (values) SELECT NULL, ... FROM View

Das Funktioniert ist aber absolut nicht elegeant.

Schönen Abend
Wolf-Tilmann

Da ich aus dem anderen Thread noch die Tabelle hatte:

Code:
test=*# create view view_eckole as select t, row_number() over () from eckole ;
CREATE VIEW
Time: 55,313 ms
test=*# select * from view_eckole;
  t   | row_number
------+------------
 foo  |          1
 bar  |          2
 batz |          3
 ;    |          4
(4 rows)

Time: 0,297 ms
test=*# select * from view_eckole where t = 'bar';
  t  | row_number
-----+------------
 bar |          2
(1 row)

Time: 0,261 ms
test=*#
test=*#
test=*# select t, row_number() over () from view_eckole where t = 'bar';
  t  | row_number
-----+------------
 bar |          1
(1 row)

Also, ich sehe nicht, warum Du bei einem Select aus einer VIEW nicht mit row_number() arbeiten kannst, man muß aber neu zählen, falls man nicht den kompletten VIEW liest, sondern da nochmals eine WHERE-Condition hat. Falls SQLLite row_number() kennt, dann sollte das da auch so gehen, spekuliere ich mal.
 
Oben