Aller au contenu

Sujets conseillés

Posté

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_users

INNER JOIN document ON document.user_crea = intra_gnl_users.id_contact

INNER JOIN document_type ON document.type = document_type.id_type

INNER 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...!

  • 2 semaines plus tard...
Posté (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.email

FROM intra_gnl_users users1

INNER JOIN document doc
ON doc.user_crea = users1.id_contact

INNER JOIN document_type doctype
ON doc.type = doctype.id_type

INNER JOIN document_categorie doccat
ON doc.categorie = doccat.id

INNER JOIN intra_gnl_users users2
ON 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é par V0r_X
  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...