Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

select from plusieurs tables


Sujet :

Requêtes PostgreSQL

  1. #1
    Nouveau Candidat au Club
    select from plusieurs tables
    Bonjour
    Je souhaiterai effectuer un sélect de plusieurs tables sur la base de données (poStgressql). Mes tables sont répertoriés par jour (exemple: table_2012_05_01 pour le 1 mai 2012) et j’en ai 500 tables. Comment faire un sélect from toutes ces tables sans avoir à écrire toutes leur noms? Merci bcp

  2. #2
    Expert éminent sénior
    Bonjour

    En sql pur c'est impossible. Il faut passer par un langage de script qui se charge de récupérer le nom des tables dans information_schema.tables puis de générer les requêtes SQL.

    Accessoirement ta conception est super mauvaise. Le nom d'une table ne doit absolument pas dépendre de la valeur de ses données. Que se passe-t-il si (par exemple) une info tagguée initialement au 1er mai se révèle fausse car elle date en réalité du 2 mai ? Elle change de table ?
    Il est tout à fait concevable que tu veuilles regrouper tes données par caractéristiques ; surtout si tu en as énormément. Mais Postgres offre justement des outils adaptés à ce problème comme par exemple les index partiels (un index qui ne référence que les lignes ayant certaines caractéristiques) ou même les tables partitionnées qui, selon mois répondent parfaitement à ton souci => tu crées une table de base puis tu crées des sous-tables qui héritent de la table de base mais qui ne concerneront que certaines données. Donc tu peux là créer ta table pour le 1er mai 2012, ta table pour le 2 mai 2012 et etc.
    Mais tes requêtes insert/update/select se feront, elles, sur la table principale. Et c'est Postgres qui se chargera d'insérer, modifier ou récupérer les infos de la sous-table adéquate.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  3. #3
    Membre actif
    Une piste à creuser ???

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    SELECT 'SELECT * FROM ' || table_name FROM information_schema.tables
    WHERE table_name LIKE 'table_2012%'