maxwarch Posté 1 Mars 2006 Posté 1 Mars 2006 Bonjour, j'aimerai pouvoir réunir ces 2 requêtes en une seule: SELECT document.*, intra_gnl_users.lastname AS nom,intra_gnl_users.firstname AS prenom,intra_gnl_users.email,document_type.nom_type,document_categorie.doc_cat FROM intra_gnl_usersINNER JOIN document ON document.user_crea = intra_gnl_users.id_contact INNER JOIN document_type ON document.type = document_type.id_typeINNER JOIN document_categorie ON document.categorie = document_categorie.id SELECT intra_gnl_users.lastname AS nom,intra_gnl_users.firstname AS prenom,intra_gnl_users.email FROM intra_gnl_users INNER JOIN document ON document.user_modif = intra_gnl_users.id_contact En fait, c'est une base de documents où l'on peut envoyer et/ou modifier des documents. A la création je met l'id du créateur du doc, le type de doc (xls, word...), la catégorie (communication, compta...) ainsi que la date de création. Ces utilisateurs se trouvent dans une table 'intra_gnl_users'. Les doc dans une table 'document' liée à 'intra_gnl_users' pour récupérer le nom, le prenom et l'email. Tous les types sont stockés dans une table 'document_type' liée à 'document'. Toutes les catégories sont stockées dans une table 'document_categorie' liée à 'document'. Lorsqu'un utilisateur modifie un doc je met son id et la date de modif dans la table 'document'. Mon problème est que je voudrai avoir une ligne de résultat contenant le nom du doc, le nom et la date du créateur ainsi que le nom et la date de modif. cad, allé chercher le nom du créateur par son id dans la table 'intra_gnl_users' ET allé chercher le nom du modificateur par son id dans la table 'intra_gnl_users'. C'est là que je coince. Pas facile à expliquer, j'espère que ça ira...!
V0r_X Posté 12 Mars 2006 Posté 12 Mars 2006 (modifié) Salut, Je ne suis pas sûr d'avoir compris ta demande, mais si j'ai bien compris, je pense pouvoir te répondre. Tu peux faire le tout en une requête, en faisant deux jointures sur la même table dans la même requête. Il suffit que tu nommes ta table différemment à chaque fois. Je te propose cela : SELECT doc.*, users1.lastname AS nom, users1.firstname AS prenom, users1.email, doctype.nom_type, doccat.doc_cat, users2.lastname, users2.firstname, users2.emailFROM intra_gnl_users users1INNER JOIN document docON doc.user_crea = users1.id_contactINNER JOIN document_type doctypeON doc.type = doctype.id_typeINNER JOIN document_categorie doccatON doc.categorie = doccat.idINNER JOIN intra_gnl_users users2ON doc.user_modif = users2.id_contact Comme tu le vois, tu peux nommer les tables auxquelles u fais référence dans ta requête. Cela te permet de faire plusieurs jointures sur la même table ave des conditions différentes. Dans notre cas, la fois où je nomme la table users1 correspond à la jointure de ta première requête. Celle où je la nomme users2 correspond à ta seconde requête. J'espère t'avoir répondu, et avoir été assez clair. Cordialement Modifié 12 Mars 2006 par V0r_X
maxwarch Posté 28 Mars 2006 Auteur Posté 28 Mars 2006 Merci beaucoup V0r_X pour ton aide. Je n'ai pas encore essayé par manque de temps, je vais bientôt m'y remettre.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant