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

HyperFileSQL Discussion :

Plusieurs tables de même structure


Sujet :

HyperFileSQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Plusieurs tables de même structure
    Bonjour,
    J'ai un code php sql qui lit une base de données via odbc, donc provenant d'une base de données d'un autre langage (Windev).

    Cette base de données contient plusieurs tables de structures identiques, évidemment avec des noms différents. Les noms de ces tables sont variables, concaténés du n° d'id de la table a laquelle elles sont liées.

    ex : pour 1 table "client" contenant 5 enregistrements, j'ai 5 tables "rdv", c'est a dire une table par client. Le nom des tables "rdv" sont du type : "rdv" conccaténé avec le id de la table client, ce qui donne : rdv1, rdv2, rdv3 rdv4 et rdv5 pour chaque table rdv de mon exemple.
    Je souhaiterai savoir si je peux lire ces tables en utilisant le principe des alias de table (ou autre), sachant qu'après moultes essais, je n'y suis toujours pas arrivé.

    Merci d'avance pour vos réponses

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    ex : pour 1 table "client" contenant 5 enregistrements, j'ai 5 tables "rdv", c'est a dire une table par client.

    Et le jour où il y aura des milliers de clients, tu auras des milliers de tables ?

    Si tu peux changer la structure de cette base de données, je te conseille fortement de la normaliser !
    Tu te rends compte d'ailleurs de la difficulté à faire ce que tu demandes !
    Le mieux, si tu es obligé d'utiliser cette structure de données, est de paramétrer la requête à l'aide du code php.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse,

    Sur le fond je suis d'accord avec toi et c'est ce que je me suis dit la 1° fois que j'ai connaissance de cette structure, malheureusement je n'ai pas la main sur cette base de données vu qu'elle provient d'un autre système.

    Qu'entends tu par paramétrer la requete? peux tu me donner un exemple?
    Jusque là je n'ai pas réussi a accéder a une autre table que "rdv" classique, pas moyen de lister rdv1 ou rdv2...

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // Récupération de l'id_client
    $sql = "
      SELECT id_client
      FROM client
      WHERE nom_client = 'Toto'
    ";
    $reponse = mysql_query($sql);
    $ligne = mysql_fetch_row($resultat);
    $id_client = $ligne['id_client'];
     
    // Construction de la requête de rendez-vous
    $table_rdv = 'rdv'.$id_client;
    $sql = "
      SELECT les_colonnes
      FROM $table_rdv
      WHERE condition
    ";
    A adapter à ton cas.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonjour, et désolé pour le retard, pas mal de boulot ces jours ci...

    J'ai bien testé ce que tu me suggères, mais malheureusement ça ne fonctionne pas.
    j'obtiens un warning "fichier inconnu" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: odbc_exec() [function.odbc-exec]: SQL error: Erreur dans le code SQL de la requête <Requete_HyperFile>. Initialisation de la requête impossible. Fichier Rdv1440 inconnu - Infos de debug : IEWD140ODS=1012 Module=<WD140ODS> Version=<14.00Co> , SQL state 01000 in SQLExecDirect in C:\MON _DOSSIER\index2.php on line 18
    Effectivement cette table, sous ce nom n'est pas déclarée, il existe une fonction sous Windev permettant d'utiliser des Alias pour gérer plusieurs tables différentes (et bien sur avec des noms différents aussi) et de mêmes structures.
    Ces tables sont créées dynamiquement. Ici sous sql si j'essaie de lire ma table par un select utilisant une requete du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $connexion =    odbc_connect("dsn", "user", "mot_de_passe") or die("echec connexion");
    $requete="SELECT * FROM Rdv1440 as Rdv";
    $resultat = odbc_exec($connexion,$requete);
    odbc_result_all($resultat);
    Le résultat de ma requete ne sort pas d'erreur mais est vide, alors que je sais avec certitude que la table n'est pas vide.
    J'ai compris que la table vraiment lue est Rdv et pas Rdv1440...

Discussions similaires

  1. comment changer le OWNER de plusieurs table en même temps ?
    Par Ekimasu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/05/2008, 17h34
  2. Recherche sur plusieurs tables en même temps
    Par Zouzou1er dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/10/2007, 09h40
  3. Réponses: 4
    Dernier message: 20/03/2007, 09h54
  4. Group by sur plusieurs table de même squelette
    Par hackrobat dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 13/03/2006, 19h41

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