Bonjour à tous,
J'ai un petit souci de requête SQL que je vais essayer de vous exposer, c'est pas simple...
Je souhaite récupérer une liste de contacts (référent du dossier) faisant partie d'un dossier particulier (ce dossier n'est pas un dossier informatique mais un dossier contenant des données concernant l'obtention d'un prêt bancaire).
Il y a plusieurs intervenants sur ce dossier qui sont des contacts et tous les contacts de l'entreprise sont dans une table 'contacts'.
Il y a également un référent du dossier (qui est aussi un contact) que je veux afficher.
Les dossiers sont dans une table 'dossiers'.
J'ai une table de liaison qui lie les contacts aux dossiers sur lesquels ils sont présents (link_contacts_dossiers).
On filtre les contacts selon leur fonction (fonction1, fonction2...) et les dossiers de ces contacts en fonction de l'utilisateur connecté (qui doit être un intervenant sur le dossier).
Mais j'aimerai sur une seule fonction (la fonction1) afficher tous les contacts de cette fonction et non plus seulement le contact lié au dossier.
Voici ma requête actuelle (en code Codeigniter mais derrière ça génère une requête SQL standard) :
Voici la requête générée :
Cette requête fonctionne très bien et ne m'affiche bien que les contacts des référents des dossiers de l'utilisateur connecté, mais...
QUESTION : comment faire pour que j'affiche TOUS les contacts ayant pour fonction 'fonction1' ? Même ceux qui ne sont pas sur les dossiers de l'utilisateur connecté.
Merci pour vos réponses
J'ai un petit souci de requête SQL que je vais essayer de vous exposer, c'est pas simple...
Je souhaite récupérer une liste de contacts (référent du dossier) faisant partie d'un dossier particulier (ce dossier n'est pas un dossier informatique mais un dossier contenant des données concernant l'obtention d'un prêt bancaire).
Il y a plusieurs intervenants sur ce dossier qui sont des contacts et tous les contacts de l'entreprise sont dans une table 'contacts'.
Il y a également un référent du dossier (qui est aussi un contact) que je veux afficher.
Les dossiers sont dans une table 'dossiers'.
J'ai une table de liaison qui lie les contacts aux dossiers sur lesquels ils sont présents (link_contacts_dossiers).
On filtre les contacts selon leur fonction (fonction1, fonction2...) et les dossiers de ces contacts en fonction de l'utilisateur connecté (qui doit être un intervenant sur le dossier).
Mais j'aimerai sur une seule fonction (la fonction1) afficher tous les contacts de cette fonction et non plus seulement le contact lié au dossier.
Voici ma requête actuelle (en code Codeigniter mais derrière ça génère une requête SQL standard) :
<?php
//SELECT infos du contact
$this->db->select('Contact.FirstName, Contact.LastName');
//FROM la table des contacts
$this->db->from('contacts as Contact');
//JOIN la table des dossiers dans lesquels le contact est le référent
$this->db->join(
'dossiers as user_dossiers',
'user_dossiers.contact_referent = Contact.Id');
//JOIN la table de liaison permettant de lier les dossiers et
//les contacts présents sur un dossier.
//Ca va nous permettre de n'afficher que les contacts référents
//des dossiers sur lesquels l'utilisateur connecté est présent.
$this->db->join(
'link_contacts_dossiers as auth_user',
'auth_user.dossier_id = user_dossiers.Id');
//WHERE IN filtre les contacts référents suivant leur fonction
$this->db->where_in('Contact.fonction', array('fonction1', 'fonction2'));
//WHERE $user_sess_id est l'id du contact connecté,
//nous filtrons la table de liaison pour n'afficher que les dossiers
//(et du coup les contacts référents) sur lesquels cet utilisateur est présent
$this->db->where('auth_user.contact_id = "' . $user_sess_id . '"');
Voici la requête générée :
SELECT `Contact`.`FirstName`, `Contact`.`LastName`
FROM `prp_contacts` as `Contact`
JOIN `prp_dossiers` as `user_dossiers`
ON `user_dossiers`.`contact_referent` = `Contact`.`Id`
JOIN `prp_link_contacts_dossiers` as `auth_user`
ON `auth_user`.`dossier_id` = `user_dossiers`.`Id`
WHERE `Contact`.`fonction` IN('fonction1', 'fonction2')
AND `auth_user`.`contact_id` = "0035700001vwVaKAAU"
Cette requête fonctionne très bien et ne m'affiche bien que les contacts des référents des dossiers de l'utilisateur connecté, mais...
QUESTION : comment faire pour que j'affiche TOUS les contacts ayant pour fonction 'fonction1' ? Même ceux qui ne sont pas sur les dossiers de l'utilisateur connecté.
Merci pour vos réponses