IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage SQL Discussion :

Créer plusieurs tables identiques vues comme une seule


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Créer plusieurs tables identiques vues comme une seule
    Bonjour,

    On m'avait appris un jour à créer une sorte d'index sur des tables identiques, avec un champ discriminant, afin qu'elles ne soient traitées comme une seule table... Pratique pour travailler sur des tables mensuelles, annuelles, ...

    Exemple :

    TABLE_01_2007
    TABLE_02_2007
    ...
    TABLE_10_2007

    Cela permet de s'adresser au SGBD (INSERT, DELETE, SELECT, UPDATE) en ne spécifiant que le nom "clé" de la table (ici TABLE). Il faut juste un champ ou un morceau de champ dans la table (Exemple, colonne Horodatage et travail sur Month(Horodatage)) pour identifier la table finale.

    Quelqu'un peut il me détailler ce mécanisme ?
    Est-il valable seulement sur MS SQL SERVER ou fait-il partie des normes SQL ?

    Merci par avance

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    partitionnement ?

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Ce type de techniques est spécifique à certains SGBD.
    Une telle table composée serait équivalente à une union.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE VIEW matable
    AS SELECT *
        FROM matable_mois_1
      UNION ALL
       SELECT *
        FROM matable_mois_2
    ;
    Sur une telle UNION, il n'est pas possible de faire d'autres opérations que des SELECT.

    En revanche l'opération inverse, qui consiste à avoir une seule grande table à laquelle on peut accéder par "portions" est simple à mettre en œuvre avec des vues.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW matable_mois_N
    AS SELECT * 
       FROM matable
       WHERE EXTRACT(MONTH FROM madate) = N
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci de vos réponses. Il s'agit bien du partionnement sous sql server. L'avantage par rapport à une union est de faire moins de code quand la base est attaquée par une application tierce, et que la requete attaque des tables mensuelles (par ex) selon les choix de l'utilisateurs. Il ne reste plus qu'à faire un job pour intégrer les tables mensuelles dans le partionnement au fur et à mesure de leur création.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Exporter plusieurs tables en txt en une seule fois
    Par anto520 dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/05/2013, 08h12
  2. [MySQL] Afficher les données de plusieurs tables par date en une seule liste.
    Par Romanodi13 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 08/09/2011, 21h45
  3. [AC-2003] Créer un table identique à une autre
    Par utan88 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/03/2011, 08h07
  4. [Doctrine] plusieurs many-to-many avec une seule table
    Par Lideln75 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/10/2010, 11h54
  5. Créer plusieures tables à partir d'une seule
    Par CHINAILLON dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/03/2008, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo