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

SQL Procédural MySQL Discussion :

fusionner 2 tables


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 45
    Points : 13
    Points
    13
    Par défaut fusionner 2 tables
    Bonjour, j'ai actuellement 2 tables dans ma BDD mysql que je voudrais fusionner.

    creations :

    id; galerie; nom; agrandi; mini; auteur; timestamp; categorie; visites; vote; nbr_votes
    _________________

    packs :

    id; galerie; nom; description; image; archive; auteur; timestamp; poids; downloads; vote; nbr_votes

    _________________

    Je voudrais fusionner ces 2 tables en une seule : "telechargements", sous cette architecture:

    id; galerie; nom; description; agrandi; mini; image; archive; auteur; timestamp; categorie; visites; poids; downloads; vote; nbr_votes

    et réattribuer une id aux enregistrements des 2 tables en fonction de leur timestamp. Et ... je suis perdu, je ne vois pas comment faire. Si vous pouviez m'aider, Merci


    edit: je pense mettre tous les enregistrements dans un array et d'appliquer un tri fonction du timestamp.. à voir

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    Moi je procèderais comme ça :

    - Création d'une table temporaire avec les colonnes galerie; nom; description; agrandi; mini; image; archive; auteur; timestamp; categorie; visites; poids; downloads; vote; nbr_votes (pas d'identifiant et pas de NOT NULL).

    - Insertion des lignes issues de creations dans cette table : INSERT INTO table_temp (...) SELECT (...) FROM creations

    - Insertion des lignes issues de packs : INSERT INTO table_temp (...) SELECT (...) FROM packs

    - Création de la table finale avec toutes les colonnes + un id auto-incrémenté

    - Insertion des lignes de la table temporaire triées par timestamp dans cette table : INSERT INTO table_finale (...) SELECT (...) FROM table_temp ORDER BY timestamp
    sans préciser la valeur de l'id auto-incrémenté bien sûr.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 45
    Points : 13
    Points
    13
    Par défaut
    Etant meilleur en php qu'en sql j'ai tapé ce petit code. En groq j'ai fait la même chose que tu voulais faire mais en utilisant un array en php et non une table temporaire. Et ça marche ! Merci qu'en même pour ton aide
    Code : 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    // FUSION DE 2 TABLES ET REATTRIBUTION D'ID EN FONCTION DU TIMESTAMP
     
     
     
    mysql_connect("host", "user", "pass");
    mysql_select_db("BDD");
     
    $sql ='SELECT * FROM creations';
    $d = mysql_query($sql) or die( mysql_error() );
    while ($t = mysql_fetch_array($d) )
    {
     	$data[] = $t;		
    }
     
     
     
    $sql ='SELECT * FROM packs';
    $d = mysql_query($sql) or die( mysql_error() );
    while ($t = mysql_fetch_array($d) )
    {
     	$data[] = $t;		
    }
     
    // Obtient une liste de colonnes
    foreach ($data as $key => $row) {
       $time[$key]  = $row['timestamp'];
    }
     
    // Tri les données
    // Ajoute $data en tant que premier paramètre, pour trier par la clé commune
    array_multisort($time, SORT_ASC, $data);
     
    foreach ($data as $key => $row)
    {
    	if (! is_numeric($data[$key]) )
    	{
    	$sql = 	'INSERT INTO telechargements
    	(id,type,galerie,nom,description,agrandi,mini,image,archive,auteur,timestamp,categorie,visite,poids,downloads,vote,nbr_votes) 
    	VALUES 
    	("",';
     
    	if ( $data[$key]['archive'] == NULL )
    	{
    		$sql .='"creations",';
    	}
    	else
    	{
    		$sql .='"packs",';
    	}
     
    	$sql .='"'.$data[$key]['galerie'].'",
    	"'.$data[$key]['nom'].'",
    	"'.$data[$key]['description'].'",
    	"'.$data[$key]['agrandi'].'",
    	"'.$data[$key]['mini'].'",
    	"'.$data[$key]['image'].'",
    	"'.$data[$key]['archive'].'",
    	"'.$data[$key]['auteur'].'",
    	"'.$data[$key]['timestamp'].'",
    	"'.$data[$key]['categorie'].'",
    	"'.$data[$key]['visite'].'",
    	"'.$data[$key]['poids'].'",
    	"'.$data[$key]['downloads'].'",
    	"'.$data[$key]['vote'].'",
    	"'.$data[$key]['nbr_votes'].'"
    	)';
     
    	mysql_query($sql) or die(mysql_error() );
    	}
    }
     
    mysql_close();
     
    echo '<pre>';
    print_r($data);
    echo '</pre><br />Opération réussie';
     
     
    ?>

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

Discussions similaires

  1. Fusionner 2 tables ADO
    Par Kaderovich dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/07/2006, 09h20
  2. fusionner 2 tables de structure différente
    Par Rcanada dans le forum Access
    Réponses: 9
    Dernier message: 21/04/2006, 09h54
  3. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  4. Fusionner 2 tables Access
    Par zangel dans le forum Access
    Réponses: 7
    Dernier message: 02/11/2005, 08h33
  5. fusionner 2 tables dont les champs sont identiques mais.....
    Par NoobX dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/10/2005, 16h12

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