8711 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai un petit soucis au niveau de ma requête MySQL, qui compte de nombreuses jointures. J'ai essayé dans tous les sens sans jamais y parvenir. Je vais essayer d'être le plus clair possible dans l'architecture :) :

employes T1 // Table relative à l'employé connecté
RIGHT JOIN entreprises T2 ON T1.id_entreprise = T2.id_entreprise // Table qui liste toutes les entreprises lié à l'employé connnecté
RIGHT JOIN employes T3 ON T2.id_entreprise = T3.id_entreprise // Table qui liste tous les employés des entreprises lié à l'employé connecté
INNER JOIN utilisateurs T4 ON T3.id_utilisateur = T4.id_utilisateur // Retourne les information de chaque employés (nom et prénom), qui sont donc aussi des utilisateurs


Donc jusque là tout fonctionne, le script me retourne bien la liste des employés/utilisateurs, à savoir deux résultats. Ensuite, je rajoute juste ceci :

RIGHT JOIN documents T5 ON T4.id_utilisateur = T5.id_utilisateur


Ce dernier point est censé me retourner tous les documents des utilisateurs de la table T4, mais seul un document m'est retourné alors qu'il ne devrait y en avoir trois. Savez-vous d’où venir le problème ? Sachant qu'il n'y a aucune clause where pour le moment afin de faciliter le debogage. ^^

Merci d'avance pour votre aide,
Gaylord.P
Modifié par Gaylord.P (27 Nov 2012 - 10:13)
Bonjour,

Personne n'a la moindre petite idée ? =S

Merci d'avance Smiley smile
Modifié par Gaylord.P (03 Dec 2012 - 08:42)
Salut Gaylord,

L'objectif de cette requète c'est de récupérer une liste de documents au final?
Si c'est le cas, tu peux faire le select sur la table des documents en faisant un truc du style :

SELECT *
FROM documents T4
WHERE T4.id_utilisateur IN (
  SELECT id FROM employes T1
  RIGHT JOIN entreprises T2 ON T1.id_entreprise = T2.id_entreprise 
  RIGHT JOIN employes T3 ON T2.id_entreprise = T3.id_entreprise
  INNER JOIN utilisateurs T4 ON T3.id_utilisateur = T4.id_utilisateur
)


Je ne suis pas un expert SQL mais c'est peut-être une solution pour faire différemment Smiley smile