Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Name der parametrisierten Tabelle

Die einzige Möglichkeit, ohne Abfragen dynamisch zu erstellen, besteht darin, jede Kombination fest zu codieren und die gewünschte auszuwählen.


Wenn der Tabellenname ein Parameter für eine gespeicherte Prozedur ist, kann dies in IF-Blöcken sein. Aber es fühlt sich klobig an.


Wenn die Felder aus jeder Tabelle gleich sind, können Sie die Tabellen zusammenführen und daraus auswählen...

CREATE VIEW myUnifiedStructure AS
      SELECT 'Table1' AS tableName, * FROM Table1
UNION SELECT 'Table2' AS tableName, * FROM Table2
UNION SELECT 'Table3' AS tableName, * FROM Table3
-- etc

SELECT * FROM myUnifiedStructure WHERE tableName = 'Table1'


Wenn die Felder in jeder Tabelle unterschiedlich sind, interessiert Sie möglicherweise nur eine Teilmenge der Felder...

CREATE VIEW myUnifiedStructure AS
      SELECT 'Table1' AS tableName, field1 AS field1, field4 AS field2 FROM Table1
UNION SELECT 'Table2' AS tableName, field2 AS field1, field3 AS field2 FROM Table2
UNION SELECT 'Table3' AS tableName, field2 AS field1, field4 AS field2 FROM Table3
-- etc


Oder Sie können NULL-Werte für Felder übergeben, die in der Quelltabelle nicht vorhanden sind...

CREATE VIEW myUnifiedStructure AS
      SELECT 'Table1' AS tableName, NULL   AS field1, field2 AS field2 FROM Table1
UNION SELECT 'Table2' AS tableName, field1 AS field1, field2 AS field2 FROM Table2
UNION SELECT 'Table3' AS tableName, field1 AS field1, NULL   AS field2 FROM Table3
-- etc