Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je transpose sous PostgreSQL quelques requêtes écrites initialement sous Oracle.
J'ai la requête ci-dessous qui me pose problème.
CREATE TABLE temp_res AS
SELECT hierar FROM (WITH req1 as (SELECT DISTINCT hierar FROM sfphierd
UNION
SELECT DISTINCT hierar FROM sfpsupl)
SELECT DISTINCT groupe,libelle FROM sfpgrps WHERE groupe NOT IN (SELECT DISTINCT grouph FROM hopempl)
INTERSECT
SELECT DISTINCT hierar,libelle FROM sfphierg WHERE hierar NOT IN (SELECT * FROM req1)
);
J'ai le message suivant lorsque je l'exécute :
la sous-requête du FROM doit avoir un alias
Avez vous une idée sur la nature de l'erreur, et comment la transposer ?
D'avance merci de vos retours.
Hors ligne
Désolé,
Je n'ai fourni la bonne requête posant problème.
La voici ci-dessous :
CREATE TABLE temp_res AS
SELECT * FROM (WITH req1 as (SELECT DISTINCT hierar FROM sfphierd
UNION
SELECT DISTINCT hierar FROM sfpsupl)
SELECT DISTINCT groupe,libelle FROM sfpgrps WHERE groupe NOT IN (SELECT DISTINCT grouph FROM hopempl)
INTERSECT
SELECT DISTINCT hierar,libelle FROM sfphierg WHERE hierar NOT IN (SELECT * FROM req1)
);
Hors ligne
En modifiant la requête comme ci-dessous, on contourne le problème de l'usage du WITH :
SELECT * FROM (
SELECT DISTINCT groupe,libelle FROM sfpgrps WHERE groupe NOT IN (SELECT DISTINCT grouph FROM hopempl)
INTERSECT
SELECT DISTINCT hierar,libelle FROM sfphierg WHERE hierar NOT IN (SELECT DISTINCT hierar FROM sfphierd
UNION
SELECT DISTINCT hierar FROM sfpsupl)
) as req1;
Quel serait le bon usage du WITH ?
Hors ligne
Le bon usage serait de rajouter un alias à la sous requête, comme l'indique l'erreur.
Par exemple :
select * from (with toto as (select 1) select * from toto);
ERROR: subquery in FROM must have an alias
LINE 1: select * from (with toto as (select 1) select * from toto);
^
HINT: For example, FROM (SELECT ...) [AS] foo.
select * from (with toto as (select 1) select * from toto) AS s;
?column?
══════════
1
(1 row)
Time: 1.325 ms
Julien.
https://rjuju.github.io/
Hors ligne
Merci de la réponse.
Hors ligne
Pages : 1