Requête entre deux table -> inner join ou autre? à l'aide...

Résolu
Michococo Messages postés 4 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 21 novembre 2008 - 18 nov. 2008 à 14:35
EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011 - 30 nov. 2008 à 13:35
Bonjour,
voici en deux mots la situation:
j'ai table1 qui pointe deux fois sur table2 avec les champs table1.id_table2_1 et  table1.id_table2_2
si je fais un SELECT * FROM table1, je vois bien les id mais j'aimerais voir le type à quoi se rapporte l'id qui se trouve dans la table2.
donc que dois-je mettre dans le SELECT puisque j'aimerai voir les deux différents types qui se trouvent dans la table2 mais avec les deux différents champs?
Je ne sais pas si j'ai été assez clair, sinon je peux être plus précis et concret...
Merci à tous pour votre aide.
p.s. j'aimerai garder cette structure (double accès depuis une table sur l'autre même si cette façon de faire est discutable, elle s'avère utile dans mon cas).
A voir également:

4 réponses

Michococo Messages postés 4 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 21 novembre 2008
21 nov. 2008 à 11:29
Merci pour la réponse mais je crains de ne pas vraiment comprendre...

A quel moment peut on avoir une relation bijective si nous avons deux tables? Si nous avons un fk dans une table qui pointe sur un ID d'une autre, chaque requête nous retournera différents résultats en fonction de la requête. A ce moment, autant créer une table avec uniquement des champs.
Dans mon cas, j'ai bien deux fk différents qui pointent sur un champs.

Mais le problème a été résolu par deux requêtes distinctes puisque les deuxième est une relation 0-1 et donc facultatif.
Sinon, nous pouvons passer par le UNION mais c'est pas très propre. J'ai donc fait un test conditionnel en PHP si la valeur fk2 est à nulle, sinon, on fait la requête (avais oublié de préciser cela, désolé).

Merci dans tous les cas...
3
EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011
30 nov. 2008 à 13:35
Tu dois faire une jointure entre Table1, Table2 et Table2 (2 fois table 2) :
Select t1.*, t21.*, t22.*
from table1 t1, table2 t21, table2 t22
where t1.id_table2_1 = t21.id
and t1.id_table2_2 = t22.id
;


/Eric
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
21 nov. 2008 à 09:41
bonjour,
j'ai table1 qui pointe deux fois sur table2 avec les champs table1.id_table2_1 et  table1.id_table2_2
si je fais un SELECT * FROM table1,

Cette relation est source d'erreur car elle n'est pas bijective..

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
21 nov. 2008 à 14:43
A quel moment peut on avoir une relation bijective  ?

Deux enregistrements différents doivent avoir des images différentes, sinon comment faire pour distinguer les pères ?
deux fils différents pourraient avoir le même père..
ça n'a pas de sens..(du point de vue mathématiques..)

Dans un mcd, il n'y a que des relations bijectives..
du moins je n'en connais pas d'autres..
imagine une gestion comptable..avec des relations comme la tienne..

cantador
0
Rejoignez-nous