dynamique nom de la table dans l'instruction select

J'ai une série de l'histoire des tables dans une base de données oracle 9. History_table_00 contient des derniers mois de données, History_table_01 contient le mois d'avant, et History_table_02 le mois d'avant. Le mois prochain, History_table_02 sera automatiquement renommé history_table_03, history_table_01 renommé history_table_02, history_table_00 renommé history_table_01, et une nouvelle history_table_00 sera créé afin de recueillir le plus récent de l'histoire (j'espère vraiment que je suis en train de sens).

De toute façon, j'ai besoin d'écrire une instruction select qui permettra de sélectionner de façon dynamique toutes les tables d'historique. J'espère que ce ne sera pas trop compliqué, car ils partagent tous le même nom, juste ajouté au numéro séquentiel afin que je puisse découvrir les noms de table avec:

select table_name from all_tables where table_name like 'HISTORY_TABLE_%';

Ma requête standard pour chaque table va être:

select id, name, data_column_1, data_column_2 from history_table_%;

Que dois-je faire pour atteindre l'objectif de l'écriture d'une instruction sql qui sélectionne à partir de toutes les tables d'historique sans m'avoir besoin d'aller dans tous les mois et ajouter la nouvelle table? Merci pour tout ce que vous les gars peuvent fournir.

  • La bonne solution ici est d'avoir une table, et d'ajouter une colonne "Année" que la première partie de la clé primaire.
  • Coehoorn - peut-être que c'est un pauvre homme de partitionnement de la solution. vous ne savez jamais.
  • ajouter au début de l'année à la clé primaire auront des caractéristiques de performances similaires à des tables séparées pour la plupart des cas d'utilisation
  • Joel, je suis d'accord qu'un changement dans l'affectation des noms de table et de l'archivage est certainement recommandé, mais sa question d'origine est toujours intéressant. Parfois, quand quelqu'un acquiert une base de données qu'ils n'ont pas le design, ils se sont rencontré ce genre de situations. Veuillez voir ma réponse sur la façon dont cela peut être accompli.
  • Je suis d'accord avec vous. Je souhaite que c'était juste une table, j'ai eu à traiter. Mais, pour quelque raison que ce soit, c'est comment il a été créé. Malheureusement, je suis coincé avec elle.
  • mans partitionnement solution"... c'est drôle, mais je pense que légèrement vrai :/
  • Une suggestion est que si vous avez la possibilité de modifier le schéma de base de données, vous pouvez modifier ma requête pour faire une insertion dans une nouvelle table où l'année est une colonne. Cela permettra à l'avenir de requêtes beaucoup plus facile... surtout pour celui qui l'adopte après vous.

InformationsquelleAutor user1588433 | 2013-07-02