Fermer2
andoh_wilfriedLe 08/02/2010 à 03:04
Salut a tous.
J'essaie d'écrire un script pour générer automatique mes requêtes en m'aidant du modèle relationnel qui lie les différentes entités. je me sert du :

SELECT * FROM(LEFT JOIN ... ON(...) LEFT JOIN ... ) pour joindre mes entités.


Mon problème se situe au niveau du fait que j'utilise * et que j'ai une double référence sur une table dans mon LEFT JOIN. J'ai donc utilisé un ALIAS pour la seconde référence à ma table. Je m'attend donc a ce que le code joigne les enregistrements de ma table et de son ALIAS en un seul enregistrement, mais la c'est la grande déception.




Voici mon pseudo code :

La table relation contient une double référence sur la table entity

TABLE relation( id_relation , idEntity_relation , idEntity_relation2)

TABLE entity( id_entity , property1 , property2 )


Avec Cette requête je voudrais obtenir que chaque enregistrement contienne tous les attributs des 2 entity de chaque enregistrement de la Table relation

SELECT * FROM (((relation LEFT JOIN entity ON( relation.idEntity_relation=entity.id_entity )) LEFT JOIN entity entity2 ON( relation.idEntity2_relation=entity2.id_entity ))


J'aurai penser que le fait d'utiliser l'alias MySql aurait compris qu'il fallait l'appliquer à tout les attributs de l'alias 'entity2'.
Mais non ca le fait unique pour la clé primaire, les autres attributs écrasant peut-être ceux de la 1ère Table entity.

Je suppose que c'est trop demander a l'option * de faire son boulot correctement et que je doive manuellement donner les noms des champs alors que je les veux tous.


Si vous pouvez me confirmer cela, ca serait sympa je fait mes début en MySql donc je connait pas trop les astuces.