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

Tabellenname in Variable

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von katsud, 27 Dezember 2017.

  1. katsud

    katsud Neuer Benutzer

    Servus, zusammen!

    Ich habe in meiner DB Tabellen, deren Namen das Jahr sind, deren Daten sie beinhalten.

    Wenn ich nun eine Abfrage setzen möchte, die die Tabelle des aktuellen Jahres trifft, wollte ich das so machen:

    SET @Jahr = year(curtime());
    SET @s = CONCAT('select * from ',@Jahr);
    PREPARE stmt FROM @s;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;


    Das wird mir von MYSQL mit einem Syntaxfehler quittiert.

    Wenn ich zur Probe dies laufen lasse:

    SET @Jahr = year(curtime());
    SET @s = CONCAT('select * from ',@Jahr);
    SELECT @s;


    bekomme ich genau meinen Select string 'Select * from 2017' zu sehen, den ich brauche

    Daraus müsste der Prepare doch was Vernünftiges basteln können oder?

    Vielleicht hat irgendjemand eine gute Idee...?

    Vielen nachweihnachtlichen Dank!

    Martin
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Das geht so nicht. Der String müßte dynamisch ausgeführt werden, in PostgreSQL z.B. innerhalb einer pl/pgsql-Funktion und EXECUTE. Prepared Statements sind was anderes.

    Deine Tabellennamen zeugen, nebenbei, von einem massiven Unverständniss von SQL und Datenbanken.
     
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