1 pièce(s) jointe(s)
problème d'incompréhension avec les jointures
Bonjour à tous,
Voici mon problème, j'essaye de faire une requête afin de récupérer des informations des candidats qui ont laisser un cv sur le site.
Le problème est que, dès que je rentre cette ligne dans la requête, l'un des 2 candidats disparait alors qu'il devrait être présent.
Voici la requête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| SELECT c.id as id,c.nom as nom,c.prenom as prenom,
DAY(c.date_envois) as Jour, MONTH(c.date_envois) as Mois, YEAR(c.date_envois) as Annee,
s.nom as nom_secteur,
a.titre as titre_annonce,
DISTINCT SUM(DISTINCT pt.temp_reel) As total_xp
FROM postule_candidat AS c
LEFT JOIN secteur AS s ON s.id = c.fk_id_secteur
LEFT JOIN annonce As a ON a.fk_id_job = c.fk_id_post
LEFT JOIN job As j ON j.id = a.fk_id_job
LEFT JOIN postule_diplome_candidat As dc ON dc.fk_id_candidat = c.id
LEFT JOIN postule_experience_candidat As ec ON ec.fk_id_candidat = c.id
LEFT JOIN postule_temp As pt ON pt.id = ec.fk_id_temp
WHERE c.id > 0 |
La ligne qui fait tout foirer :
Code:
DISTINCT SUM(DISTINCT pt.temp_reel) As total_xp
Le code se présente actuellement sous cette forme en php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?php
$candidat = new Candidat();
$requete = ' SELECT c.id as id,c.nom as nom,c.prenom as prenom,';
$requete = $requete.' DAY(c.date_envois) as Jour, MONTH(c.date_envois) as Mois, YEAR(c.date_envois) as Annee,';
$requete = $requete.' s.nom as nom_secteur,';
$requete = $requete.' a.titre as titre_annonce,';
$requete = $requete.' SUM(DISTINCTpt.temp_reel) As total_xp';
$requete = $requete.' FROM postule_candidat AS c';
$requete = $requete.' LEFT JOIN secteur AS s ON s.id fk_id_type_diplome = '.$_POST["diplome_type"].')';
if(!empty($_POST["fonction"])) $requete = $requete.' AND (ec.fk_id_diplome = '.$_POST["fonction"].')';
$requete = $requete.' ORDER BY j.date_creation DESC';
?>
= c.fk_id_secteur';
$requete = $requete.' LEFT JOIN annonce As a ON a.fk_id_job = c.fk_id_post';
$requete = $requete.' LEFT JOIN job As j ON j.id = a.fk_id_job';
$requete = $requete.' LEFT JOIN postule_diplome_candidat As dc ON dc.fk_id_candidat = c.id';
$requete = $requete.' LEFT JOIN postule_experience_candidat As ec ON ec.fk_id_candidat = c.id';
$requete = $requete.' LEFT JOIN postule_temp As pt ON pt.id = ec.fk_id_temp';
$requete = $requete.' WHERE c.id > 0';
if(!empty($_POST["diplome_type"])) $requete = $requete.' AND (dc.fk_id_type_diplome = '.$_POST["diplome_type"].')';
if(!empty($_POST["fonction"])) $requete = $requete.' AND (ec.fk_id_diplome = '.$_POST["fonction"].')';
$requete = $requete.' ORDER BY j.date_creation DESC';
?> |
Ce sont des requêtes crées dans la page php pour faire du multi requête par select.
Je vous fournis également la base de données en pièce jointe :)
Merci d'avance pour l'aide, car je sèche dessus depuis ce matin ^^
Si vous avez des conseils pour optimiser ma requête, n'hésitez pas ^^