Vous n'êtes pas identifié(e).
Bonsoir,
Toujours en train d'essayer de sortir de l'état de newbie PostGresql, voici mon nouveau défi en cette réponse sibylline du système :
[Err] ERROR: relation "g" does not exist
alors que l'alias g est défini dans la clause FROM, par contre, comme elle est aussi utilisée dans le join, j'ai un doute si je dois utiliser "INNER JOIN g ON..." car j'ai l'impression que ce "g" n'est pas compris ou bien... j'avoue que j'ai du mal à m'y mettre.. oops.
Merci pour votre aide et bonne soirée
SELECT
job.job_departement.departement_name as "Département",
p.partner_firstname as "Prénom",
p.partner_lastname as "Nom",
array_agg(g.contrat_taux) as "Taux",
p.collab_initials as "Initiales",
p.partner_tel_prof as "Tel",
p.partner_mail_prof as "Mail",
array_agg(job.hr_contrat_type.type_name) as "Types de Contrats",
job.hr_function.function_name,
job.job_departement.departement_cc_account,
min(contrat_begin) as "Première date",
max(contrat_end) as "Dernier contrat",
(select count(*) from job.hr_contrat where job.hr_contrat.id = p.id) as NbTous,
max(g.id),
array_agg(job.hr_function.function_name)
FROM partner.partner p, job.hr_contrat as g
INNER JOIN job.hr_contrat_type ON g.type_id = job.hr_contrat_type."id"
INNER JOIN g ON g.collab_id = p."id"
INNER JOIN job.hr_function ON g.function_id = job.hr_function."id"
INNER JOIN job.job_departement ON job.hr_contrat.departement_id = job.job_departement."id"
group by job.job_departement.departement_name,
p.partner_firstname,
p.partner_lastname,
p.collab_initials,
p.partner_tel_prof,
p.partner_mail_prof,
job.hr_function.function_name,
job.job_departement.departement_cc_account
ORDER BY job.job_departement.departement_name ASC, p.partner_firstname ASC;
Dernière modification par CHR (04/01/2014 19:26:20)
Hors ligne
Bonsoir,
g est un alias, vous ne pouvez donc pas l'utiliser pour une référence de table à joindre. Si voulez voulez utiliser la table job.hr_contrat une deuxième fois, il faut spécifier le nom entier dans le JOIN et lui définir un autre alias.
Julien.
https://rjuju.github.io/
Hors ligne
Comme PostgreSQL ne se trompe pas ( ), vous n'avez pas de table g. Donc j'ai du mal à piger ce que vous voulez faire. Si le INNER JOIN vous sert à ajouter le filtre, pourquoi ne pas le faire avec une clause WHERE ? donc remplacez
INNER JOIN g ON g.collab_id = p."id"
par
WHERE g.collab_id = p."id"
Par contre, vous devez ajouter le WHERE après le dernier INNER JOIN et avant le GROUP BY.
Guillaume.
Hors ligne
J'essaie de suite et vous dit le résultat !
(cela dit... c'est le forum où - tous domaines confondus - j'ai eu les réponses les plus rapides, merci !)
Hors ligne
c'est bien une autre erreur qui ressort... j'ai l'impression que ça tourne en boucle car l'ordre n'est pas le bon...
[Err] ERROR: missing FROM-clause entry for table "hr_contrat"
LINE 28: inner JOIN job.hr_contrat_type ON hr_contrat.type_...
Hors ligne
Si vous avez gardé l'alias g pour la table hr_contrat, il faut utiliser cet alias dans la condition de jointure (remplacer hr_contrat.type_id par g.type_id).
Julien.
https://rjuju.github.io/
Hors ligne
Cool, ça fonctionne si l'on met les noms, les alias, les ordres justes !
Merci encore pour votre aide :-)
Dernière modification par CHR (04/01/2014 19:25:31)
Hors ligne