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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Fusionner 3 tables en 1

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fusionner 3 tables en 1

n°1445794
djedie7
Posté le 21-09-2006 à 15:02:59  profilanswer
 

Bonjour,
 
Je suis sous Mysql 5.0, et j'ai 3 tables liées par un ID.
 
Pour shématiser :
 
T1 :  
id
nom
prenom
 
T2:
id
age
sexe
 
T3:
id
cheveux
taille
 
et je voudrai :  
 
T1:
id
nom
prenom
age
sexe
cheveux
taille
J'ai décidé de les fusionner pour n'en avoir plus qu'une.
 
Quelle commande utiliser ?
 
Merci

mood
Publicité
Posté le 21-09-2006 à 15:02:59  profilanswer
 

n°1445806
MagicBuzz
Posté le 21-09-2006 à 15:19:50  profilanswer
 

create vue v_t1 as
select t1.id, t1.nom, t1.prenom, t2.age, t2.sexe, t3.cheveux, t3.taille
from t1 inner join t2 on t2.id = t1.id inner join t3 on t3.id = t1.id;
 
ensuite tu utilises cette vue comme une table (je suppose que MySQL support les insert/delete/update sur les vues maintenant)
 
et si vraiment ça te choques, tu fais :
mais t'as plus qu'à refaire tes indexs et tout, alors que si tu gardes la vue tu t'emmerdes pas à tout refaire :spamafote:
 
create table t1
as
select * from v_t1;
 
il te reste aussi la solution de fair
 
alter table t1 add column sexe char(1) null;
 
et ainsi de suite pour chaque pour chaque colonne, et mettre à jour les nouvelles colonnes en fonction des autres tables.
 
bon, après tout ça, moi je commence à sècher, j'ai plus d'autre solution à proposer :D


Message édité par MagicBuzz le 21-09-2006 à 15:21:56
n°1445821
djedie7
Posté le 21-09-2006 à 15:32:34  profilanswer
 

YEP
merci des conseils
 
Si je rajoute les champs moi-même.
 
QUelle est le code du UPDATE a faire pouer remplir les donnees des champs crées ?

n°1445835
MagicBuzz
Posté le 21-09-2006 à 15:45:21  profilanswer
 

un truc du genre (y'a pas deux sgbd qui supportent la même syntaxe, quand ils la supportent)
 
update t1
set
age = t2.age,
sexe = t2.sexe,
cheveux = t3.cheveux,
taille = t3.taille
from t2, t3
where t2.id = id
and t3.id = id
 
ou
 
update t1
set
age = (select age from t2 where id = t1.id),
sexe = (select age from t2 where id = t1.id),
cheveux = (select age from t3 where id = t1.id),
taille = (select age from t3 where id = t1.id)
 
il y a d'autres syntaxe... peut-être aucune
 
le plus propre de toute façon, c'est de faire le "create table as select ...". lui il marche sur tous les sgbd

n°1445837
MagicBuzz
Posté le 21-09-2006 à 15:45:59  profilanswer
 

ou de faire un create table avec la liste de tes champs, index et tout
 
puis un  
 
insert into t4 values (select ...)

n°1445867
djedie7
Posté le 21-09-2006 à 16:22:41  profilanswer
 

j'ai fais la commande UPDATE (1ere)
 
mais il me dit : #1109 - Table inconnue 't2' dans where clause

n°1445890
djedie7
Posté le 21-09-2006 à 16:44:27  profilanswer
 

MagicBuzz a écrit :

ou de faire un create table avec la liste de tes champs, index et tout
 
puis un  
 
insert into t4 values (select ...)


 
grrrrr ca ne marche pas...
 
J'ai crée ma table T4 avec touts les champs de T1, T2 et T3, masi apres je bloque.
 
Tu mets quoi dans le select ?

n°1445901
MagicBuzz
Posté le 21-09-2006 à 16:54:49  profilanswer
 

le select de la vue (le premier que je t'ai montré)

n°1445916
djedie7
Posté le 21-09-2006 à 17:07:08  profilanswer
 

merci bcp
 
C ok !

n°1584967
Toxin
Carpe ★★ Vitam
Posté le 10-07-2007 à 20:44:52  profilanswer
 

MagicBuzz a écrit :

un truc du genre (y'a pas deux sgbd qui supportent la même syntaxe, quand ils la supportent)
 
update t1
set
age = t2.age,
sexe = t2.sexe,
cheveux = t3.cheveux,
taille = t3.taille
from t2, t3
where t2.id = id
and t3.id = id
 
ou
 
update t1
set
age = (select age from t2 where id = t1.id),
sexe = (select age from t2 where id = t1.id),
cheveux = (select age from t3 where id = t1.id),
taille = (select age from t3 where id = t1.id)
 
il y a d'autres syntaxe... peut-être aucune
 
le plus propre de toute façon, c'est de faire le "create table as select ...". lui il marche sur tous les sgbd


 
Vais espérer que ça m'aide pour demain au taf en tout cas.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Ma chaîne YT

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

  Fusionner 3 tables en 1

 

Sujets relatifs
Relation entre tables et foreign keysOpération sur 2 tables
Firebird - Effacer le contenu de toutes les tables sauf...Fusionner trois tables (résolu)
[mySQL] Comment fusionner 2 tables ? (bis) [résolu]fusionner plusieurs tables mysql en une seule...(bis)
fusionner plusieurs tables mysql en une seule...peut-on fusionner 2 tables qui n'ont pas les mêmes champs ?
[MySQL] Fusionner 2 tables... ?[VB6 et access] j'ai vraiment besoin d'aide pour fusionner des tables
Plus de sujets relatifs à : Fusionner 3 tables en 1


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