trouver la bonne clé père pour l'affecter à ses tables enfa

perdu748
Invité n'ayant pas de compte PHPfrance

28 août 2014, 00:21

bonjour à tout le monde, j'ai un soucis:
dans ma base de données y a des tables enfants dont leurs clés étrangères sont null et je dois trouver la bonne clé du table père qui lie ces enfants à son papa
j'ai fais des requêtes de jointure mais j'ai pas trouvé la sol. donc y a t-il des astuces pour résoudre ce problème.
j'ai deux chemin pour joindre la table enfant et table père :
1. chemin direct :
select clé _prim enfant,att1, att2 , clé_prim_papa..
from table_ enfant te
inner join table_papa tp
on te.clé_etr=tp.clé_prim
mais là ca me servira à rien puisque te.clé_etr est null pour plusieurs lignes.
2.chemin un peu lourd, passer par 5 tables :
select ett1,attr2
from table_enfant te
inner join table2 t2 on te.clé_etr_ef= t2.clé_prim_t2
inner join table3 t3 on t2.clé_etr_t2=t3.clé_prim_t3
inner join table4 t4 on t3.clé_primt3= t4.clé_etr1_t4
inner join table_papa tp on t4.clé_etr_t4=tp.clé_prim
j'espère que c'est clair
merci pour vos participations

Mammouth du PHP | 571 Messages

28 août 2014, 11:24

bonjour,
tu peux exclure tous les enregistrements qui pointent à NULL :
select clé _prim enfant,att1, att2 , clé_prim_papa..
from table_ enfant te
inner join table_papa tp
on te.clé_etr=tp.clé_prim WHERE te.clé_etr IS NOT NULL OR te.clé_etr!='';

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 août 2014, 09:39

salut,

je ne comprend pas trop ta question.

tu veux corrigé le foutoir qui fk null ?

c'est le cas la seule solution c'est faire la liaison entre parents et enfants pour mettre à jour la table enfant.
si, en une requête ou plusieurs tu peux le faire c'est possible, sinon à la main.

cela peux ce faire dans une procédure stockée avec un curseur plus update pour chaque ligne enfant.
A priori la seconde requête doit pouvoir t'aider à cela.

et ensuite régler le problème d'insertion "foireuse" et ajouter une vrai fk (alter table xxx add constraint ...) pour éviter ce genre de problème ;)

@+
Il en faut peu pour être heureux ......