2010-09-05 4 views
12
SELECT var1,var2,var3,table_name 
FROM table1 LEFT JOIN table_name on var3=table_name.id 

Bedeutung mag ich dynamisch links nach Tisch kommen, je nach Wert von table_name von table1, da var3 von dort genommen wird.MYSQL Abfrage als Tabellenname in LEFT JOIN mit variabler

Aber die obigen Abfrage-Ergebnisse in

Tabelle table_name existiert nicht

Mein Fehler von MySQL-Beschränkung?

+0

Ich glaube nicht, dass Sie das tun können. Sie müssen den Tabellennamen wahrscheinlich an eine gespeicherte Prozedur übergeben, wenn Sie diese Art von Funktionalität wünschen oder das, was Sie versuchen, neu gestalten möchten. – spig

+1

Es ist keine MySQL-Einschränkung. Mehr wie SQL-Beschränkung, wenn Sie es so nennen können, aber ich würde eher sagen, es ist ein Hinweis darauf, dass etwas mit Ihrem Datenbank-Design nicht stimmt. – Mchl

+0

Haupttabelle enthält Objekte. Jedes Objekt kann Attribute haben. Für jedes Attribut gibt es separate Tabellen, die mögliche Werte auflisten - Werte können sehr lang sein (mehrere hundert Zeichen) und es gibt viele mögliche Werte (Tausende). Also die Haupttabelle hat 2 Felder pro Attribut: attr_table_name, attr_table_id - um Platz zu sparen und Attributnamenänderung zu erlauben. Wenn Abfrage ausgeführt wird, gebe ich den tatsächlichen Attributwert zurück, nicht die ID, deshalb brauche ich LEFT JOIN und dynamische Tabellennamen. Wie sonst würden Sie die DB entwerfen? – selytch

Antwort