Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[PostrgeSQL] heritage et alias de colonne

11 réponses
Avatar
Etienne
Salut.

bon j'ai rien trouvé dans la doc dont c'est surement impossible, mais ca
coute rien de demander.

est ce qu'il est possible de créer une sorte d'alias sur un colonne pour
y acceder vie un autre nom.

je m'explique.

j'ai deux tables

CREATE "pere" (
"idpere" serial NOT NULL,
"data" text,
PRIMARY key (idpere)
);

CREATE "fils" (
"ext1" text,
"ext2" text,
PRIMARY key (idpere)
) INHERITS (pere);

Mon problème est que j'aimerai pouvoir utilise idfils (qui n'existe pas)
a la place de idpere.

Genre je voudrai pouvoir faire un
SELECT * FROM fils WHERE idfils = 115;
a la place de
SELECT * FROM fils WHERE idpere = 115;

alors pourquoi je veux faire ca ?
Ben tout simplement parce que par convention j'utilise toujours comme
cle primaire le mon de la table précédé de "id"

hors, là en fonction que ma table est hérité ou non, ce fonctionne ou ca
ne fonctionne pas.
Ca simplifierai aussi la lecture des jointures qui lorsqu'elles sont
complexe on un gros paquet de idpere dans tous les coins...

Ca serait bien que ce soit possible, ce serait meme encore mieux si on
pouvait force l'utilisation de idfils a la place de idpere lorsqu'on
accède a la table fils...

Etienne

1 réponse

1 2
Avatar
Sebastien Lardiere
Le 27/08/2010 15:18, WebShaker a écrit :
Le 26/08/2010 09:48, Sebastien Lardiere a écrit :
Il suffit de faire une vue, non ?
create view v_fils as select idpere as idfils, date, ext1, ext3 from
fils ;



Ah oui c'est une idée...
c'est pas l'idéal mais c'est vrai que ca fonctionne...



Ou sinon, une sous-requete :

select idfils, data, ext1, ext3 from ( select idpere as idfils, data,
ext1, ext3 from fils ) as fils where idfils5 ;

ou encore une CTE ( >= pg8.4 ), comme dit Frédéric Brouard

--
Sébastien
1 2