Fusionner 3 tables en 1 - SQL/NoSQL - Programmation
Marsh Posté le 21-09-2006 à 15:19:50
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
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
Marsh Posté le 21-09-2006 à 15:32:34
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 ?
Marsh Posté le 21-09-2006 à 15:45:21
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
Marsh Posté le 21-09-2006 à 15:45:59
ou de faire un create table avec la liste de tes champs, index et tout
puis un
insert into t4 values (select ...)
Marsh Posté le 21-09-2006 à 16:22:41
j'ai fais la commande UPDATE (1ere)
mais il me dit : #1109 - Table inconnue 't2' dans where clause
Marsh Posté le 21-09-2006 à 16:44:27
MagicBuzz a écrit : ou de faire un create table avec la liste de tes champs, index et tout |
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 ?
Marsh Posté le 10-07-2007 à 20:44:52
MagicBuzz a écrit : un truc du genre (y'a pas deux sgbd qui supportent la même syntaxe, quand ils la supportent) |
Vais espérer que ça m'aide pour demain au taf en tout cas.
Marsh Posté le 21-09-2006 à 15:02:59
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