comment créer une nouvelle table à partir de différentes tables existante?
Bonjour,
J'ai une grosse base de données postgres sur un même serveur, et pour simplifier le travail, je veux récupérer des différentes tables les données intéressantes (les colonnes). pour les regrouper dans 1 seule table.
J'ai procédé ainsi :
CREATE TYPE essai AS (user_id varchar, username varchar, First_Names varchar, Last_name varchar, company_id varchar, company_name varchar, rate varchar, project_id varchar, project_name varchar);
CREATE OR REPLACE FUNCTION transform_table() RETURNS SETOF essai AS
$BODY$
DECLARE
rec record;
o essai;
BEGIN
FOR rec IN SELECT user_id FROM acs_users_all GROUP BY user_id ORDER BY user_id
FOR rec IN SELECT company_id FROM companies
LOOP
o.user_id:=rec.user_id;
SELECT* INTO o.username, o.First_Names, o.Last_name FROM acs_users_all WHERE user_id = rec.user_id;
SELECT* INTO o.company_name FROM companies WHERE company_id = rec.company_id;
o.project_id:=rec.project_id;
SELECT*INTO o.project_name FROM projects WHERE project_id = rec.project_id;
o.user_id:=rec.user_id;
SELECT *INTO o.rate FROM TABLE_java WHERE user_id = rec.user_id;
RETURN NEXT o;
END LOOP;
RETURN ;
end;
$BODY$
LANGUAGE 'plpgsql' ;
mes message d'erreur sont :
ERROR: record "rec" is not assigned yet
DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT: PL/pgSQL function "transform_table" line 5 at for over select rows
Je ne pense pas que ce soit une très bonne methode ? est ce que je dois utiliser dblink?
Merci