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

Anfängerfrage: Bestehende Tabelle um Felder erweitern aus (php)Plugin

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von MB1969, 4 April 2012.

  1. MB1969

    MB1969 Neuer Benutzer

    Hallo zusammen,

    ich habe als totaler SQL Neuling folgendes Problem:

    Eine MySQL Datenbank Tabelle muss aus einem Plugin-Script (PHP) erweitert werden. Die speziellen PHP Script Details und weitere systemspezifische Anpassungen sind eine andere Baustelle.

    Konkret: Die Tabelle muss um weitere Attribute erweitert werden und sieht ca. so aus:

    Feld | Typ | Kollation | Attribute | Null | Standard | Extra
    id int(11) Nein Auto_increment
    articleID
    attr1 varchar(255) latin1_swedish_ci
    attr2
    ...
    attr20

    Es soll attr21 bis attr31 hinzugefügt werden. Das muss wohl per:


    ALTER TABLE ADD (<felddefinitionsliste>)

    gemacht werden, wobei mir aber die praktische Schreibweise der Felddefinitionsliste Probleme macht und welche Bezeichnugen und Werte denn auf meinen Fall hier bezogen jetzt genau aufgeführt werden müssen. In SQL-Wikis war das für mich zu allgemein und ich konnte die Beispiele nicht umformen.

    Also z.B.

    ALTER TABLE s_articles_attributes ADD (id int(NULL), )

    ...ist das so überhaupt richtig? Was muss im ersten Feld stehen? attr21? Usw...

    ...Und ich bin mir auch nicht sicher, ob dann noch etwas wie

    INSERT INTO <name> [ <spaltenliste> ] VALUES ( <werteliste> )

    nötig ist. Oder ob mit dem ALTER Befehl alles getan ist.

    Als Beispiel noch kurz, wie DB-Operationen innerhalb des Plugin-Codes behandelt werden. Das Beispiel hier ist nicht von mir und es geht auch um etwas ganz anderes:
    PHP:
    if ($blogCategory){
                
    $sql "
                SELECT SQL_CALC_FOUND_ROWS
                    a.id as articleID,aDetails.id AS articleDetailsID, weight,ordernumber,datum,releasedate,
                    ...
                    unitID,
                    attr1,attr2,attr3,attr4,attr5,attr6,attr7,attr8,attr9,attr10,
                    attr11,attr12,attr13,attr14,attr15,attr16,attr17,attr18,attr19,attr20,
    Die endgültigen Werte der Attr-Felder werden im Backend der Web-Applikation definiert. Wichtig ist hier nur, das sie von dem Plugin her angelegt werden.

    Ich muss und will noch viel lernen, aber das ist jetzt kurzfristig nicht zu schaffen und meine Erfahrungen liegen eher im Bereich Template/CSS/Smarty

    Könntet Ihr mir bitte helfen und zumindest einen Hinweis geben, wie ich jetzt am besten weitermachen muss?

    Grüße
    MB1969
     
  2. ukulele

    ukulele Datenbank-Guru

  3. MB1969

    MB1969 Neuer Benutzer

    Hey danke schon mal.

    muss ich also offenbar so vorgehen?:
    ALTER TABLE s_articles_attributes ADD COLUMN ID; VALUES (Attr21, Attr22, Attr23, Attr24, Attr25, Attr26, Attr27, Attr28, Attr29, Attr30 Attr31)

    ...weil "ID" in der ersten Spalte steht und Attr1-20 direkt darunter?!
    ...Die neuen Attr21-Attr31 dann in Klammern gesetzt dahinter als Werteliste?

    Grüße
    MB1969
     
  4. Walter

    Walter Administrator Mitarbeiter

    Was möchtest Du genau tun?

    Der ALTER TABLE fügt in der Tabelle dauerhaft eine neue Spalte ein (stell Dir das einfach vor wie in Excel wenn Du eine neue Spalte einfügst, sie ist leer).
    Der INSERT wiederum erzeugt einen neue Zeile in der Tabelle.
     
    PLSQL_SQL gefällt das.
  5. MB1969

    MB1969 Neuer Benutzer

    sorry - war wohl etwas zu chaotisch meine Eröffnungsfrage... Gutes Beispiel von Dir übrigens.

    Ich muss diese Tabelle (siehe bild) um weitere Attribute (Attr21 -31) erweitern. Bis Attr20 ist in der Tabelle vorgegeben und muss so erhalten bleiben Tabelle.png

    ...Offenbar brauche ich also doch INSERT und nicht ALTER TABLE?
    (Später muss das ganze in eine Plugin-Struktur wie oben, aber eins nach dem anderen.

    Aber wie sieht die parktische Syntax dafür genau aus?
    INSERT INTO <name> [ <spaltenliste> ] VALUES ( <werteliste> )

    Grüße
    MB1969
     
  6. ukulele

    ukulele Datenbank-Guru

    Code:
    ALTER TABLE s_articles_attributes ADD attr21 VARCHAR(255);
    ALTER TABLE s_articles_attributes ADD attr22 VARCHAR(255);
    ALTER TABLE s_articles_attributes ADD attr23 VARCHAR(255);
    ...
     
    PLSQL_SQL gefällt das.
  7. Walter

    Walter Administrator Mitarbeiter

    Was war denn an meinem Excel-Beispiel so unverständlich?
     
    PLSQL_SQL gefällt das.
  8. ukulele

    ukulele Datenbank-Guru

    Für mich nichts ;)

    Eventuell verwechselt er die angezeigte Tabelle zur Struktur mit der Datenbanktabelle...
     
    PLSQL_SQL gefällt das.
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