Bonjour,
J'ai une table contenant des objets ayant chacun un id.
space_map
x y type id
--------------
0 5 1 6
1 17 3 9
etc...
|
Chaque enregistrement est soit une étoile, soit une planète, soit un astéroïde selon le champs 'type' (1:etoile, 2:planete, 3:asteroide).
Avec un JOIN, je voudrais chercher l'image de l'objet. Cette image est stockée dans le champs 'map_image' de la table lui correspondant.
En effet, il y a 3 tables 'etoile', 'planete' et 'asteroide'.
Par exemple pour l'étoile :
etoile
id map_image etc...
---------------------------
6 etoile1.png
etc...
|
Ces 3 tables sont complètement différentes mais ont en commun les champs id et map_image.
Donc je voudrais que selon le type de l'enregistrement, on aille chercher l'image qui correspond dans la table appropriée.
Ca n'a pas l'air très complexe, c'est pourquoi j'ai pensé pouvoir le faire en une seule requète, mais je suis bloqué.
Voila ce que j'ai actuellement :
Code :
- SELECT space_map.* , etoile.map_image, planete.map_image, asteroide.map_image,
- FROM space_map
- INNER JOIN etoile ON ( space_map.type =1 AND space_map.id = etoile.id )
- INNER JOIN planete ON ( space_map.type =2 AND space_map.id = planete.id )
- INNER JOIN asteroide ON ( space_map.type =3 AND space_map.id = asteroide.id )
- WHERE space_map.x >0
- AND space_map.x <20
- AND space_map.y >0
- AND space_map.y <20
|
Mais ca ne fonctionne évidement pas, puisqu'il ne sait pas comment chercher les 2 autres map_image....
Existe-t-il un JOIN spécial qui répondrait à mes attentes ?
Merci de votre attention 
Message édité par Pascal le nain le 21-07-2009 à 01:59:14