Nachträgliches einfügen von Column mit Aufzählung

DatenbankSanjou

Neuer Benutzer
Beiträge
1
Hallo Leute,

ich habe ein kleines Problem bzgl. einer Implementierung.

Ich weiß nicht, wie ich meinen vorhandenen Code erweitern kann, sodass neben einer zusätzlichen Spalte diese auch mit neuen Konstanten befüllt wird. Ich möchte nämlich, dass mir angezeigt wird ob ein Fahrzeug vorbestellt 'V' oder ausgeliehen 'A' wurde.

upload_2020-1-14_21-26-50.png


Mein Code :
ALTER TABLE fahrzeuge ADD Status CHAR(1) NULL;
SELECT KFZ_NR, Nummernschild, Status FROM
(SELECT * FROM fahrzeuge NATURAL JOIN
(SELECT KFZ_NR FROM ausleihen
UNION
SELECT kfz_nr FROM vorbestellungen));

Ich bin noch relativ neu im Datenbankbereich und würde mich sehr freuen wenn mir jemand weiterhelfen könnte oder eventuell mir sogar was neues beibringen könnte.


Liebe Grüße

Datenbanksanjou
 
Werbung:
Du brauchst keine extra Spalte dafür:

Code:
test=# create table fahrzeug(nr int primary key);
CREATE TABLE
test=*# create table vorbest (nr int references fahrzeug);
CREATE TABLE
test=*# create table ausleih (nr int references fahrzeug);
CREATE TABLE
test=*# copy fahrzeug from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 1
>> 2
>> 3
>> 4
>> \.
COPY 4
test=*# copy vorbest from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 1
>> 3
>> \.
COPY 2
test=*# copy ausleih from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 4
>> \.
COPY 1
test=*# select f.*, t.typ from fahrzeug f right join (select nr, 'v' as typ from vorbest union all select nr, 'a' from ausleih ) t  on f.nr=t.nr;
 nr | typ
----+-----
  1 | v
  3 | v
  4 | a
(3 rows)

test=*#

das ganze wäre noch geschmeidiger, wenn Du statt 2 identischer Tabellen nur eine nehmen würdes mit der entsprechenden Spalte für den typ dort.
 
Zurück
Oben