1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

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

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von DatenbankSanjou, 14 Januar 2020.

  1. DatenbankSanjou

    DatenbankSanjou Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden