Page 1 sur 1

jointure de plusieures tables

Posté : 05 juil. 2005, 16:19
par ruly
hello,

la ca fait 3 heures ke je me prend la tete pour une petite jointure de table mais je n'y arrive pas.

je dois joindre 5 tables entre elles plus ou moins.

voila ma requete sql:

Code : Tout sélectionner

SELECT * FROM hardware, utilisateur_manager, model, specialisation, marque WHERE hardware_id = '".$hardware_id."' AND ((hardware.utilisateur_manager_id = utilisateur_manager.utilisateur_manager_id ) or (hardware.utilisateur_manager_id = '0') ) AND hardware.model_part_number = model.model_part_number AND model.specialisation_id = specialisation.specialisation_id AND marque.marque_id = model.marque_id
le soucy c entre la table hardware et utilisateur_manager. car il me resors tjrs le 1er de la table utilisateur_manager.

est ce que qqn voit d'ou vient l'erruer???

merci 'davance

Posté : 05 juil. 2005, 16:43
par ouckileou
sans la structure de tes tables, une petite description de ce qu'elles contiennent et l'énoncé de ce que tu veux obtenir, ça va être difficile de t'aider

Posté : 05 juil. 2005, 16:46
par zeus
Essaye les jointures

Code : Tout sélectionner

SELECT * FROM ((((hardware LEFT JOIN utilisateur_manager ON hardware.utilisateur_manager_id=utilisateur_manager.utilisateur_manager_id) JOIN model ON hardware.model_part_number=model.model_part_number) JOIN specialisation ON model.specialisation_id = specialisation.specialisation_id) JOIN marque ON marque.marque_id = model.marque_id) WHERE hardware_id = '".$hardware_id."'
JOIN va chercher la correspondance d'un champ dans l'autre champ
LEFT JOIN va afficher toutes les valeurs du champ de gauche et sa correspondance si elle existe, juste la valeur sinon

Posté : 05 juil. 2005, 16:48
par mere-teresa
Juste un conseil :
-préfixe tes tables avec des alias (utilisateur_manager AS u)
- regarde la syntaxe de LEFT OUTER JOIN dans le manuel

Posté : 05 juil. 2005, 16:48
par ouckileou
bon ben je me suis trompé y'en a qui y arrive :lol:

Posté : 05 juil. 2005, 17:07
par pjl
et évite le SELECT *.
Prend la peine de préciser les champs dont tu as besoin et uniquement ceux-ci.
Ce n'est pas la peine de ramener un même champ plusieurs fois.