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

PHP & Base de données Discussion :

Regroupement de plusieurs tables en une seule table


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Regroupement de plusieurs tables en une seule table
    Bonjour à toutes et tous,

    Après 3 ans de non activité au niveau php, je me remets tout doucement sur mon projet.

    Je remarque que j'avais mal commencé alors la construction de ma base de données (mysql) et je voudrais dès lors la reconstruire.

    Voilà mon problème, j'ai ma base de données "base_db" qui contient un bon nombre de tables +- 80 qui possèdent toutes la même structure.
    id
    noms
    temps
    points
    circuit

    j'essaye de trouver comment je peux faire pour créer une nouvelle table reprenant toutes les tables mais ayant un champs supplémentaire le nom de l'ancienne table

    id
    nom_ancienne table
    noms
    temps
    points
    circuit

    car j'ai commencé manuellement à faire des insert mais je ne suis pas sorti de l'auberge

    Quelqu'un aurait il une idée comment je peux arriver à faire cela

    merci

    isamarcc

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux simplement faire une boucle sur les noms des tables

    Imaginons que $tables est un PHP qui a recuperé le nom des tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($tables as $table) {
        $sql = 'INSERT INTO tanouvelletable (nom_ancienne table, noms, temps, points, circuit) SELECT "' . $table . '", noms, temps, points, circuit) FROM '  . $table;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 886
    Points
    886
    Par défaut
    La solution de maître Sabotage est bien sur nettement plus limpide mais je post tout de même ce que j'avais imaginé

    En trois étapes.
    1 : tu récupères la liste des tables avec SHOW TABLES
    2 : tu récupères les enregistrements de chaque table avec SELECT
    3 : tu insères dans la nouvelle table avec INSERT

    Ca doit donner quelque chose comme
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $requete_SHOW="SHOW TABLES";
    $table_nom="";
    $result_SHOW=mysql_query($requete_SHOW);
    while ($ligne_01=mysql_fetch_row($result_SHOW))
    	{
    	$table_nom=$ligne_01['0'];
    	$requete_SELECT="SELECT * FROM $table_nom";
    	$result_SELECT=mysql_query($requete_SELECT);
    	echo "<p>insertion des enregistrements de la table ".$table_nom."</p>";
    	while ($ligne_02=mysql_fetch_array($result_SELECT))
    		{
    		$requete_INSERT="
    		INSERT INTO nom_de_ta_nouvelle_table 
    		(
    		nom_ancienne table,
    		noms,
    		temps,
    		points,
    		circuit
    		)
    		VALUES
    		(
    		'$table_nom',
    		'$ligne_02['noms']',
    		'$ligne_02['temps']',
    		'$ligne_02['points']',
    		'$ligne_02['circuit']'
    		)";
    		$result_INSERT=mysql_query($requete_INSERT);
    		}
    	}
    Attention, j'ai pas testé, il peut y avoir quelques erreurs de syntaxe ...
    Participez vous aussi !
    Message utile
    Discussion résolue

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu mélanges les deux, tu as tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result =mysql_query("SHOW TABLES");
    while ($row=mysql_fetch_row($result)) {
         $table = $row[0];
         $sql = 'INSERT INTO tanouvelletable (nom_ancienne_table, noms, temps, points, circuit) SELECT "' . $table . '", noms, temps, points, circuit) FROM '  . $table;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 111
    Points : 4 466
    Points
    4 466
    Par défaut
    a part que suis pas sur de la nouvelle structure

    plus logique d'avoir 2 tables

    id
    id_nom_ancienne table
    noms
    temps
    points
    circuit

    id
    nom_ancienne table
    $moi= ( !== ) ? : ;

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci pour vos réponses, je vais essayer de faire une synthèse et essayer
    Dès que j'ai une solution je reviens pour donner le résultat

Discussions similaires

  1. Exporter une seule table vers une nouvelle table excel
    Par yo.ourti dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 18/04/2014, 11h21
  2. Réponses: 7
    Dernier message: 15/01/2014, 18h45
  3. Réponses: 1
    Dernier message: 24/02/2011, 19h11
  4. Plusieurs indicateurs d'une meme table dans une seule requete
    Par arnaud.barre dans le forum Débuter
    Réponses: 5
    Dernier message: 12/04/2007, 17h23
  5. Réponses: 4
    Dernier message: 14/09/2005, 16h29

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