requête spéciale, je ne m'en sort pas.

Eléphant du PHP | 190 Messages

12 oct. 2011, 13:23

Y'a quelque chose que je ne comprend pas....

ceci

SELECT tag.tag_id, tag.tag_libelle, element.elt_id, element.elt_libelle
FROM tag,element
INNER JOIN element_has_tag ON element_has_tag.elt_id = element.elt_id


fonctionne, même si le résultat n'est pas celui que je veux.

et ceci

SELECT tag.tag_id, tag.tag_libelle, element.elt_id, element.elt_libelle
FROM tag,element
INNER JOIN element_has_tag ON element_has_tag.tag_id = tag.tag_id

ne fonctionne pas: Champ 'tag.tag_id' inconnu dans on clause

Par contre, si j'inverse tag et element dans mon FROM, le deuxieme code fonctionnera mais pas le premier...

Dans ma clause ON je ne peut tester que la deuxième table indiquée dans mon FROM.

Mammouth du PHP | 19672 Messages

12 oct. 2011, 13:51

Tu as trois tables, donc deux jointures : là, tu n'en fais qu'une seule. essaye comme ceci :
SELECT
  tag.tag_id,
  tag.tag_libelle,
  element.elt_id,
  element.elt_libelle
FROM tag
  INNER JOIN element_has_tag ON element_has_tag.tag_id = element.tag_id
  INNER JOIN element ON element_has_tag.elt_id = element.elt_id
Ne trouves-tu pas ça plus logique de cette manière ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 190 Messages

12 oct. 2011, 13:56

J'avais trouvé ! Nos posts se sont croisés ! Tout d'abord merci Cyrano, tu m'a pousser a chercher par moi tout en m’orientant, ça m'a permis de comprendre ce que je faisait !

Voici la requête souhaitée:
SELECT tag.tag_id,tag.tag_libelle,element.elt_id,element.elt_libelle FROM element
INNER JOIN element_has_tag
ON element_has_tag.elt_id = element.elt_id
INNER JOIN tag
ON tag.tag_id = element_has_tag.tag_id
WHERE element.elt_id=2
En fait le where doit venir après les jointures.... je l'avais placé partout sauf la.

Edit: on ne fais pas de la même façon visiblement....

Mammouth du PHP | 19672 Messages

12 oct. 2011, 14:04

...tu m'a pousser a chercher par moi tout en m’orientant, ça m'a permis de comprendre ce que je faisait !
C'est l'idée ;)
... on ne fais pas de la même façon visiblement....
Absolument, et je préfère la mienne, c'est plus lisible :p
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: