[Jointure] Ca m'extrait deux fois l'entrée alors qu'il y a en qu'une
Bonjour,
Je me débroille (en tant que novice) mais la je bloque et je ne comprends pas pourquoi.
J'ai deux tables tb_objets et tb_objets_has_tb_equipment_objet:
Citation:
tb_objets
-- id_objet
-- fd_numero_objet
-- fd_autre_colone
Citation:
tb_objets_has_tb_equipment_objet
-- tb_objets_id_objet
-- tb_equipment_objet_id_equipment
Dans mon cas, j'ai plusieurs objets dans ma table "tb_objets" qui ont un "id_objet" unique. C'est a dire qu'il n'y a pas de doublons.
Dans l'autre table j'ai qu'un objet qui a des équipement. C'est l'objet qui a l'id 8. Donc ma table "tb_objets_has_tb_equipment_objet", j'ai deux lignes:
La premiere ligne a
Citation:
tb_objets_id_objet =8
tb_equipment_objet_id_equipment = 22
Citation:
tb_objets_id_objet =8
tb_equipment_objet_id_equipment = 26
J'ai besoin d'afficher tous les équipements de l'objet qui a l'ID 8.
Pour cela j'ai fait une jounture comme ceci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
$id=8;
$sql_mod = "SELECT * FROM tb_objets
INNER JOIN tb_objets_has_tb_equipment_objet ON tb_objets.id_objet=tb_objets_has_tb_equipment_objet.tb_objets_id_objet
WHERE tb_objets.id_objet LIKE ".$id;
$query_mod = mysql_query($sql_mod)or die(mysql_error());
$nb_mod = mysql_num_rows($query_mod);
if($nb_mod){
while($data_mod = mysql_fetch_assoc($query_mod)){
?>
<fieldset><legend>Modification de objet id: <?php echo $data_mod['id_objet']; ?></legend>
<?php
echo 'a l\'équipement :';
echo $data_mod['tb_equipment_objet_id_equipment'];
echo '<br>'; #include($root.'include/manage_objets_add_mod.form.php');
?>
</fieldset>
<?php
}
}else{
echo 'magage.objet.mod.iframe : error, no record';
} |
J'ai aussi essayé LEFT JOIN, RIGHT JOIN, mais sans succès.
Je ne comprends pas pourquoi il y a deux <fieldset> avec l'i 8, qui s'affiche car j'ai qu'un objet qui a l'ID 8 qui est enregistré dans la table "tb_objets"
http://www.hello-web.net/temp/fieldset.jpg
Comment puis-je corriger ma requete pour que j'aie un <fieldset> avec l'ID 8 et à l'intérieur, les deux equipement 22 et 26???
Merci pour votre aide