PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 04/01/2014 00:32:38

CHR
Membre

[RESOLU] - un peu de mal avec les alias de tables... ERROR

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

#2 04/01/2014 01:16:14

rjuju
Administrateur

Re : [RESOLU] - un peu de mal avec les alias de tables... ERROR

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.

Hors ligne

#3 04/01/2014 01:16:49

gleu
Administrateur

Re : [RESOLU] - un peu de mal avec les alias de tables... ERROR

Comme PostgreSQL ne se trompe pas ( smile ), 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

#4 04/01/2014 01:30:53

CHR
Membre

Re : [RESOLU] - un peu de mal avec les alias de tables... ERROR

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

#5 04/01/2014 01:34:23

CHR
Membre

Re : [RESOLU] - un peu de mal avec les alias de tables... ERROR

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

#6 04/01/2014 14:14:39

rjuju
Administrateur

Re : [RESOLU] - un peu de mal avec les alias de tables... ERROR

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).

Hors ligne

#7 04/01/2014 19:17:37

CHR
Membre

Re : [RESOLU] - un peu de mal avec les alias de tables... ERROR

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

Pied de page des forums