Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3370 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  transfert de données entre 2 bases

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

transfert de données entre 2 bases

n°1086420
Doomhammer
Posté le 17-05-2005 à 11:32:31  profilanswer
 

Salut les gens !!!
 
Je cherche à faire un lien entre 2 bases de données sous MySQL. Le problème est que les tables correspondantes entre ces 2 bases n'ont pas la même structure. J'ai essayé de faire le lien avec un INSERT INTO BaseQuiStock.table SELECT ... FROM BaseTemp.table ... Mais vu que je suis un débutant en SQL, j'ai quelques difficultés.
Si vous avez compris quelquechose à ce que je viens de dire et que vous avez une réponse je vous remercie d'avance.
 
++

mood
Publicité
Posté le 17-05-2005 à 11:32:31  profilanswer
 

n°1086449
denzz
huhuuuuu ! (désolé )
Posté le 17-05-2005 à 11:59:10  profilanswer
 

tu est sur la bonne voie a mon avis
prends bien ton temps pr faire ta requête sur le papier, et tu y arriveras

n°1086544
Doomhammer
Posté le 17-05-2005 à 13:27:08  profilanswer
 

Mon problème est le suivant : je veux récupèrer les noms des logiciels grâce à "select distinct name from inventory.softwares" mais dans la table test.glpi_software, il y a une clé unique et primaire que je dois aggrémenter. Je voulais faire "select (max(ID)+1) from test.glpi_software" mais ça ne fonctionne pas. Je mets des attributs bidon pour les autres champs. Une idée??
 
insert into test.glpi_software  
select (max(ID)+1) from test.glpi_software,
select distinct name from inventory.softwares,  
 '1', NULL , NULL , '-1', NULL , '-1', '-1', '21', '-1', '2', '1'


Message édité par Doomhammer le 17-05-2005 à 13:28:31
n°1086569
mrbebert
Posté le 17-05-2005 à 13:47:37  profilanswer
 

Tu ne peux pas avoir plusieurs SELECT dans la requête. Fais d'abord une requête SELECT correcte, qui te renvoie le résultat voulu, tu rajouteras le INSERT après ;)
 
Pour l'indice, tu pourrais effectivement faire un "MAX(ID)+1". Mais si ton champ est une clé primaire sur un entier, pourquoi ne pas la déclarer en auto-incrémentée ? MySQL fera l'addition lui même si tu ne précise pas la valeur du champ (tu n'est pas obligé de définir dans le SELECT tous les champs définis dans la table sur laquelle porte l'INSERT) ou que tu mets "0".
 
Ca pourrait faire un truc dans le genre :
INSERT INTO test.glpi_software(name)
SELECT DISTINCT name FROM inventory.softwares;
 
Les champs de test.glpi_software autres que "name" prendront leur valeur par défaut (ou la valeur suivante pour une clé auto-incrémentée) :)

n°1086594
Doomhammer
Posté le 17-05-2005 à 14:03:57  profilanswer
 

merci pour l'info!!
Avec "INSERT INTO test.glpi_software(name)  
SELECT DISTINCT name FROM inventory.softwares;" ça fonctionne nickel.
Le champ ID était déjà en auto-incrémentat.  

n°1086663
Doomhammer
Posté le 17-05-2005 à 14:24:36  profilanswer
 

re pb :
 
En plus du nom du logiciel, il me faut la version. Je voulais faire la jointure comma ça :
update test.glpi_software
set test.glpi_software.version = inventory.softwares.version
where test.glpi_software.name = inventory.softwares.name
mais il me retourne que la table est inconnue.
Y a t'il moyen de l'insérer directement pendant le INSERT INTO??

n°1086689
mrbebert
Posté le 17-05-2005 à 14:31:36  profilanswer
 

oui, tu peux toujours faire :
INSERT INTO test.glpi_software(name, version)  
SELECT DISTINCT name, version FROM inventory.softwares
 
Mais faut bien voir que le DISTINCT porte sur tous le SELECT : un logiciel ayant plusieurs versions apparaitra plusieurs fois car le couple (name,version) aura plusieurs valeurs différentes. Peut être faudra t'il quelque chose du genre :
SELECT name, MAX(version) ... GROUP BY name
pour récupérer une version par logiciel.
 
 
Sinon, je crois qu'il existe effectivement un moyen de faire une mise à jour en utilisant plusieurs tables, mais je connais plus la syntaxe [:figti]


Message édité par mrbebert le 17-05-2005 à 14:33:21
n°1086703
Doomhammer
Posté le 17-05-2005 à 14:41:59  profilanswer
 

re-merki ;)
 
INSERT INTO test.glpi_software(name, version)  
SELECT DISTINCT name, version FROM inventory.softwares  
C'est exactement ce que je recherchais. Comme ça si il y a des postes où la mise à jour d'un poste n'a pas été effectué, on peut le voir.


Message édité par Doomhammer le 17-05-2005 à 15:37:18
n°1088016
Doomhammer
Posté le 18-05-2005 à 15:40:01  profilanswer
 

J'arrive maintenant à importer les données que je veux grâce aux INSERT INTO ... SELECT... , mais maintenant je passe aux jointures entre 2 tables fraichement remplies.  
 
ex : pour lier les softs importés avec les noms des pcs inventoriés.
Ces données sont contenues dans la table inventory.software qui contient deviceID (identifiant du pc) et name et version (nom et version du soft).
Dans la base qui doit recevoir ces donées il y a 3 tables :
 
test.glpi_software ou sont recensées les logiciels composés de ID (clé primaire) et name et version (récupérer précédement).
 
test.glpi_computers ou sont recensés les postes composés de ID(clé primaire) et name (nom du pc récupérer précedement)
 
et la 3ème à remplir : test.glpi_inst_software qui donne quel logiciel est installé sur quel pc, dont la structure est la suivante : ID(clé primaire), cID(identifiant du pc) et sID (identifiant du soft).
 
Y a t'il moyen d'effectuer la jointure entre ces 2 bases pour remplir test.glpi_ins_software??


Message édité par Doomhammer le 18-05-2005 à 15:40:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  transfert de données entre 2 bases

 

Sujets relatifs
Avis sur la base de données[Réglé] Problème de sélection de données
Connection d'un programme Java avec base de données ACCESSAfficher une base de données
importer des données mysql vers outlook?Affichage multipage des données pris dans mysql
[Probeme] Algorithmique et structure de donnéesrecuperer des donnees dans fichier .db
Ecriture données provenant d'une boucleRécupération des données d'une liste d'un formulaire
Plus de sujets relatifs à : transfert de données entre 2 bases


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR