Kalle_b: MySQL: Gibt es ALIAS- Namen für Tabellenfelder?

Hallöle,

ich habe vor drei Jahren Tabellen definiert, die in vielen Programmen angesprochen werden.

Eine Umbenennung von Feldnamen kommt also nicht infrage, ohne alle Programme ändern zu müssen.

Nun sind aber einige Namen sehr unglücklich gewählt, z.B. adr_id in der einen, adress_id in der anderen Tabelle. Muss immer nachschauen, wie heisst das Feld nun gerade in dieser Tabelle.

Pfiffig wäre es, ALIAS- Namen zu vergeben, also mit

SELECT * FROM terminplan WHERE adress_id=4711

eine Antwort zu bekommen, auch wenn das Feld adr_id heißt.

Geht das?

Kalle

  1. Hi Kalle,

    nein, das geht nicht. Du mußt schon wissen, wie das Kind heißt, bevor Du es beim Namen nennst.

    Gruß

    Hans

  2. Hallo Kalle,

    Pfiffig wäre es, ALIAS- Namen zu vergeben, also mit

    SELECT * FROM terminplan WHERE adress_id=4711

    eine Antwort zu bekommen, auch wenn das Feld adr_id heißt.

    mit Views müßte sowas klappen, siehe MySQL Dokumentation: 23.2. CREATE VIEW Syntax.
    Bei MySQL Dokumentation: 13.1.2. ALTER TABLE Syntax sehe ich nichts, was auf Feld-Aliase hinweisen würde.

    Grüße aus Karlsruhe,
    Götz

    --
    Losung für Dienstag, 6. Juni 2006
    Hat Gott vergessen, gnädig zu sein, oder sein Erbarmen im Zorn verschlossen? (Psalm 77,10)
    Der Herr verzögert nicht die Verheißung, wie es einige für eine Verzögerung halten; sondern er hat Geduld mit euch und will nicht, dass jemand verloren werde, sondern dass jedermann zur Buße finde. (2. Petrus 3,9)
    (Losungslink)
    1. Hallo Götz,

      mit Views müßte sowas klappen, siehe MySQL Dokumentation: 23.2. CREATE VIEW Syntax.

      Danke für den Hinweis, ich quäle mich aber noch mit Version 3 herum.

      LG Kalle

      1. Hallo Kalle,

        Danke für den Hinweis, ich quäle mich aber noch mit Version 3 herum.

        dann wirst Du wohl irgendwie "drumrum" coden müssen, wie Basti und Du selbst schon schrieben.

        Grüße aus Karlsruhe,
        Götz

        --
        Losung für Dienstag, 6. Juni 2006
        Hat Gott vergessen, gnädig zu sein, oder sein Erbarmen im Zorn verschlossen? (Psalm 77,10)
        Der Herr verzögert nicht die Verheißung, wie es einige für eine Verzögerung halten; sondern er hat Geduld mit euch und will nicht, dass jemand verloren werde, sondern dass jedermann zur Buße finde. (2. Petrus 3,9)
        (Losungslink)
  3. Hallo,

    Du könntest Dir eine Funktion schreiben, die den Query-String erzeugt; in dieser die Aliasnamen hinterlegen bzw. als Argument übergeben und dann für jeden Namen checken, ob die Spalte exisitiert und die Query entsprechend aufbauen.

    Grüße Basti

    1. Hallo Basti,

      Du könntest Dir eine Funktion schreiben, die den Query-String erzeugt; in dieser die Aliasnamen hinterlegen bzw. als Argument übergeben und dann für jeden Namen checken, ob die Spalte exisitiert und die Query entsprechend aufbauen.

      Habe schon überlegt, die betreffenden Feldnamen in einem zweidimensionalen, assoziativen PHP- Array abzulegen und dann so anzusprechen:

      SELECT ".$tab['termine']['adress_id']." FROM ".$db[0]['termine'] WHERE ...

      Das mache ich tatsächlich für Tabellennamen, die in verschiedenen Datenbanken ($db) verschieden heissen, aber den gleichen Aufbau haben.

      Ist gar nicht mal so schlecht.

      Nachteil: Beim Test von SQL- Statements in phpMyAdmin müssen diese Angaben von Hand durch die richtigen Namen ersetzt werden. Wenn ich das auch noch für die Feldnamen machen muss **mitgrausenabwend**

      LG Kalle