Mysql
 sql >> Database >  >> RDS >> Mysql

Nome tabella parametrizzato

L'unico modo, senza creare query dinamiche, è codificare in ogni combinazione e scegliere quella desiderata.


Se il nome della tabella è un parametro di una procedura memorizzata, può trovarsi in blocchi IF. Ma sembra goffo.


Se i campi di ogni tabella sono gli stessi, puoi unire le tabelle e selezionare da quelle...

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'


Se i campi sono diversi in ogni tabella, potresti essere interessato solo a un sottoinsieme dei campi...

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


Oppure puoi passare NULL per campi che non esistono nella tabella di origine...

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