jointure de plusieures tables

Eléphant du PHP | 181 Messages

05 juil. 2005, 16:19

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 juil. 2005, 16:43

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 16:46

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

05 juil. 2005, 16:48

Juste un conseil :
-préfixe tes tables avec des alias (utilisateur_manager AS u)
- regarde la syntaxe de LEFT OUTER JOIN dans le manuel

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 juil. 2005, 16:48

bon ben je me suis trompé y'en a qui y arrive :lol:

ViPHP
pjl
ViPHP | 2119 Messages

05 juil. 2005, 17:07

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.