Hallo
Ich habe folgende Tabellen:
TABLE landslide
[TABLE=“class: grid, width: 150”]
[TR]
[TD]lnumber[/TD]
[TD]lname[/TD]
[TD]northing[/TD]
[TD]easting[/TD]
[TD]datum[/TD]
[TD]PNO[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]blabla[/TD]
[TD]2222222[/TD]
[TD]3333333[/TD]
[TD]2012-12-12[/TD]
[TD]1[/TD]
[/TR]
[/TABLE]
landslides sind Massenbewegungen in der Natur
TABLE landslide_parts
[TABLE=“class: grid, width: 150”]
[TR]
[TD]plandslide[/TD]
[TD]scarp[/TD]
[TD]accumulation[/TD]
[TD]front[/TD]
[TD]other[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]scp0001[/TD]
[TD]acc0001[/TD]
[TD]fr0001[/TD]
[TD]other0001[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]scp0002[/TD]
[TD]acc0002[/TD]
[TD]NULL[/TD]
[TD]NULL[/TD]
[/TR]
[/TABLE]
das sind die Teile einer Massenbewegung, die nicht immer alle vorhanden sind
TABLE scarp
[TABLE=“class: grid, width: 150”]
[TR]
[TD]scpnom[/TD]
[TD]height[/TD]
[TD]…[/TD]
[/TR]
[TR]
[TD]scp0001[/TD]
[TD]5[/TD]
[TD]…[/TD]
[/TR]
[TR]
[TD]scp0002[/TD]
[TD]6[/TD]
[TD]…[/TD]
[/TR]
[TR]
[TD]…[/TD]
[TD]…[/TD]
[TD]…[/TD]
[/TR]
[/TABLE]
hier liegen die Eigenschaften des Teiles “Abriss” (scarp) vor
Die Verknuepfung geschieht ueber lnumber + plandslide, bzw. scarp + scpnom
Meine erste Frage lautet ob der Weg ueber die mittlere Tablle ueberhaupt notwendig ist, oder die Spalten auch in die obere einfuegen kann!?
Fuer die mittlere Tabelle moechte ich jetzt, dass die IDs, wie zum Beispiel ‘scp0001’ automatisch eingetragen und hochgezaehlt werden, wenn ueber eine Eingabemaske angegeben wird das es einen Teil Abriss gibt. Fuer eine weitere Massenbewegung die eingetragen wird, soll dann auf ‘scp0002’ gezaehlt werden. Und das dann fuer jeden Teil!
Wie kann ich das denn realisieren? Muesste man noch eine Spalte mit yes/no (BOOLEAN) erstellen, die den Wert dann uebergibt?
Gruss und Dank
F3RK3L
F3RK3L]
Fuer die mittlere Tabelle moechte ich jetzt, dass die IDs, wie zum Beispiel ‘scp0001’ automatisch eingetragen und hochgezaehlt werden,
Gruss und Dank
F3RK3L
So ganz verstanden habe ich Dein Problem möglicherweise nicht, aber mal so als Spielerei:
test=# create sequence f3rk3l_seq;
CREATE SEQUENCE
test=*# create table f3rk3l (id serial, t text default 'scp' || nextval('f3rk3l_seq')::text);
NOTICE: CREATE TABLE will create implicit sequence "f3rk3l_id_seq" for serial column "f3rk3l.id"
CREATE TABLE
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# select * from f3rk3l;
id | t
----+------
1 | scp1
2 | scp2
3 | scp3
(3 rows)
Andreas
akretschmer:
So ganz verstanden habe ich Dein Problem möglicherweise nicht, aber mal so als Spielerei:
test=# create sequence f3rk3l_seq;
CREATE SEQUENCE
test=*# create table f3rk3l (id serial, t text default 'scp' || nextval('f3rk3l_seq')::text);
NOTICE: CREATE TABLE will create implicit sequence "f3rk3l_id_seq" for serial column "f3rk3l.id"
CREATE TABLE
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# select * from f3rk3l;
id | t
----+------
1 | scp1
2 | scp2
3 | scp3
(3 rows)
Andreas
Besser:
test=# create sequence f3rk3l_seq;
CREATE SEQUENCE
test=*# create table f3rk3l (id serial, t text default 'scp' || to_char(nextval('f3rk3l_seq'),'FM0009'));
NOTICE: CREATE TABLE will create implicit sequence "f3rk3l_id_seq" for serial column "f3rk3l.id"
CREATE TABLE
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# select * from f3rk3l;
id | t
----+---------
1 | scp0001
2 | scp0002
(2 rows)
Andreas
Schon mal vielen Dank, ich werde es ausprobieren.
Wie würde das denn aussehen, wenn ich das machen möchte
[TABLE=“class: grid, width: 150”]
[TR]
[TD]id
[/TD]
[TD]t
[/TD]
[TD]r
[/TD]
[TD]q
[/TD]
[/TR]
[TR]
[TD]1
[/TD]
[TD]scp0001
[/TD]
[TD]a0001
[/TD]
[TD]b0001
[/TD]
[/TR]
[TR]
[TD]2
[/TD]
[TD]scp0002
[/TD]
[TD]a0002
[/TD]
[TD]NULL
[/TD]
[/TR]
[/TABLE]
Stefan
F3RK3L]Schon mal vielen Dank, ich werde es ausprobieren.
Wie würde das denn aussehen, wenn ich das machen möchte
Stefan
Ach komm, ausgehend von meinem Beispiel schaffst das jetzt bestimmt selber, oder?
Andreas
Ok. Das Prinzip hab ich generell verstanden, aber bei meinem konkreten Fall ist mir noch was nicht klar.
Wie bringe ich ihm denn bei, dass er keinen Wert oder NULL eintragen soll, wenn zum Beispiel kein Teil Front oder wie in der letzten Tabelle kein Wert für ‘q’ vorhanden wäre.
Also: die Massenbewegung Nr.1 hat eine Front >>> ‘fr0001’
Nr.2 hat keine Front >>> NULL
NR.3 hat eine Front >>> ‘fr0003’
usw.
Mich würde auch interessieren, wie man Werte automatisch einfügen lassen kann, wenn ein bestimmter Wert in der Tabelle steht.
Also wenn in eine Spalte “Obst” ‘apfel’ eingetragen wird, dass die Spalte “Form” mit ‘rund’ gefüllt wird.
Stefan
F3RK3L]Ok. Das Prinzip hab ich generell verstanden, aber bei meinem konkreten Fall ist mir noch was nicht klar.
Wie bringe ich ihm denn bei, dass er keinen Wert oder NULL eintragen soll, wenn zum Beispiel kein Teil Front oder wie in der letzten Tabelle kein Wert für ‘q’ vorhanden wäre.
Also: die Massenbewegung Nr.1 hat eine Front >>> ‘fr0001’
Nr.2 hat keine Front >>> NULL
NR.3 hat eine Front >>> ‘fr0003’
usw.
Mich würde auch interessieren, wie man Werte automatisch einfügen lassen kann, wenn ein bestimmter Wert in der Tabelle steht.
Also wenn in eine Spalte “Obst” ‘apfel’ eingetragen wird, dass die Spalte “Form” mit ‘rund’ gefüllt wird.
Stefan
Ganz allgemein kann man solche und andere Probleme oft mit einem TRIGGER lösen.
Andreas