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 Re : Général » Requête pour avoir la dernière maj d'une tache dans une table unique » 27/06/2011 23:59:09

arthurr a écrit :

select id_tache, max(date_maj) from latable group by id_tache;

Merci mais ça ne réponds pas à ma question car j'ai besoin d'afficher tous les champs.
Quand j’étends ma requête à tous les champs en les rajoutant dans la clause group by ça me retourne tous les enregistrements de chaque tache.

#2 Re : Général » Requête pour avoir la dernière maj d'une tache dans une table unique » 27/06/2011 11:34:34

Merci mais je pense avoir mal formulé ma question

Je veux récupérer les dernières maj de chaque tache et non pas une seule tache particulière.

Encore merci

#3 Général » Requête pour avoir la dernière maj d'une tache dans une table unique » 27/06/2011 02:30:37

zied
Réponses : 5

J'ai une table qui permets de gérer l’historique des maj taches d'un projets.

La structure de la table est la suivante
(num_inc, id_tache, contenue_tache,..., date_maj)

Les données exp :
(10, 102, expédier le colis par DHL,..., 02/02/2011)
(15, 102, expédier le colis par UPS,..., 15/02/2011)
(29,102, remettre le colis à mr duond pour le remettre en main propre,..., 17/02/2011)

Je veux faire une requête qui permet de récupérer la dernière maj de ma tache avec l'id 102. Il s'agit donc de la dernière ligne.

Ma question est surement bête mais elle m'échappe sad

Merci

#4 Re : PL/pgSQL » Procédure stockée et un tableau en tant que paramètre » 16/11/2009 10:08:57

gleu a écrit :

Petite question supplémentaire, par curiosité : à quoi vous sert la variable result? de toute façon, en cas de problème, la fonction ne renverra rien... donc je ne comprends pas à quoi sert cette variable.

Bonne réflexion, je pense que  c'est juste à cause d'un copier coller que j'ai fait au tout début et par la suite ça m'a échappé!

Sinon, malheureusement, je suis en version 8.3 donc je n'ai pas de fonction unnest!

Merci Gleu

#5 Re : PL/pgSQL » Procédure stockée et un tableau en tant que paramètre » 16/11/2009 00:16:41

Merci pour ton aide.
Je mets l'exemple de la procédure que j'ai faite. ça pourrait servir pour certains. De plus, si vous avez des conseils pour améliorer ce code, je suis preneur.

CREATE OR REPLACE FUNCTION __defresprev(IN idres bigint, IN rolesid bigint[], OUT result boolean)
  RETURNS boolean AS
$BODY$

declare 
 tab bigint[]; 
 di int2; 
 m bigint;
 i int2; 

BEGIN
result:=false;

DELETE FROM com_previleges
 WHERE id_res=$1;

 tab:=$2;
di:=(SELECT array_upper(tab, 1));

FOR i IN 1..di LOOP

	m:=tab[i];
	INSERT INTO com_previleges(allow, id_res, role_id)
		VALUES (true, $1, m);

END LOOP;

result:=true;

End;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION __defresprev(bigint, bigint[]) OWNER TO postgres;

#6 PL/pgSQL » Procédure stockée et un tableau en tant que paramètre » 13/11/2009 10:17:54

zied
Réponses : 5

Est-il possible de passer un tableau de dimension variable en paramètre à une procédure stockée plpgsql?

exemple :

 create function myfnc (in param1 character, in param2 int,...., in param array)
....

Si oui, est-il possible de faire des itérations pour chaque élément du tableau pour exécuter des requêtes?

#7 Re : Réplication » Réplication de deux bases distantes » 28/10/2009 13:53:41

Je vois que la discussion dérive d'un moment à l'autre vers une disscussion sur les SGBD autre que Postgres.
C'est certes intéressant mais ce n'est pas le cœur de cette discussion.
Il faut reconnaitre que Postgresql ne possède pas un outil de réplication assez pointu.  C'est un point faible qui vient s'ajouter à la pauvreté des outils "graphiques" de gestion  du SGBD en général.
Si quelqu'un possède du poids wink pour attirer l'intérêt de l'équipe de développement de PG sur ces gros  sujets, je pense que "l'Histoire lui sera reconnaissante d'avoir défendu une BONNE CAUSE en faveur des utilisateurs et des développeurs sous PG."
looool

#8 Re : Réplication » Réplication de deux bases distantes » 25/10/2009 21:48:31

Moi ça m'intéresse d'avoir une copie locale(sur mon PC) de ma base de données de développement située dans un serveur du réseau local.
Mon objectif est de pouvoir travailler dessus lorsque je suis à l'extérieur.
Pour donner un bon exemple, je veux que ça soit géré comme un SVN pour la gestion des versions des projets ==> Je veux pouvoir faire des mises à jour de la structure de la base dans les deux sens.

Que me conseillez vous?

#10 Général » Restauration d'un fichier généré avec PG_DUMP » 21/08/2009 15:02:15

zied
Réponses : 2

Je sauvegarde mes données avec un fichier batch

set d=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
REM Sauvegarde des bases de données, dans un fichier au f
C:\Progra~1\PostgreSQL\8.3\bin\pg_dump -U postgres mabase > save%d%.dump

J'essaie de faire un pg_restore

C:\Program Files\PostgreSQL\8.3\bin>pg_restore -d nouvellebase save210809.dump

J'obtiens l'erreur suivante

pg_restore: [archiver] le fichier en entrée ne semble pas être une archive valid
e

#12 Général » Requêtes de regroupements » 21/07/2009 11:41:34

zied
Réponses : 1

Pour simplifier mon problème supposons que j'ai deux tables Equipes et Membres Equipes

equipes (id_eq , nom_eq ...)
membres (id_membre, nom, age, id_eq) où id_eq est une clé etrangère qui référence equipes.id_eq

Je cherche à faire une requête qui me retourne l'id_eq retourne des enregistrements du type

(id_eq, nom_eq, membres_equipes)
par exemple
(1, Avicenne, Mohamed+David+Alain+Qiang)

#13 Re : Général » Passer le nom d'un Champ comme paramètre d'une proc. stockée » 21/07/2009 11:00:13

Merci.
Voici le résultat final

CREATE OR REPLACE FUNCTION __searchtest3
(
    _key character varying,
	_value character varying,
	OUT prod_version bigint
)
RETURNS bigint
AS $$
DECLARE __query text DEFAULT NULL;
BEGIN
 
	__query := 'SELECT prod_version FROM vprod_details WHERE "' || _key || '" = \'' || _value || '\'';
	EXECUTE __query INTO prod_version;
 
	RETURN;
	
END $$ LANGUAGE plpgsql;

#14 Re : Général » Passer le nom d'un Champ comme paramètre d'une proc. stockée » 20/07/2009 15:57:09

J'ai essayé cette écriture

 

CREATE OR REPLACE FUNCTION __searchtest2(character, character)
  RETURNS bigint AS
$BODY$
PREPARE  test(character,character) AS SELECT prod_version FROM vprod_details
WHERE $1=$2;
 
EXECUTE test('prod_ref','ZA01820C'); 
 
$BODY$
  LANGUAGE 'sql' VOLATILE
  COST 100;
ALTER FUNCTION __searchtest(character, character) OWNER TO postgres;

J'ai l'erreur suivante

ERROR: return type mismatch in function declared to return bigint
DÉTAIL : Function's final statement must be a SELECT.
CONTEXTE : SQL function "__searchtest2"

#15 Général » Passer le nom d'un Champ comme paramètre d'une proc. stockée » 20/07/2009 13:08:37

zied
Réponses : 6

Bonjour
Je veux créer une procédure stocké à laquelle je veux passer en paramètre 2 variables  Le nom d'un champ et sa valeur

J'ai écrit ce code pour tester mais ça ne marche pas :

CREATE OR REPLACE FUNCTION __searchtest(character, character)
  RETURNS SETOF record AS
$BODY$
select prod_version from vprod_details
where $1=$2;

$BODY$
  LANGUAGE 'sql' VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION __searchtest(character, character) OWNER TO postgres;

avec $1 le nom du champ et $2 est la valeur du champ. 
Est-ce possible?
Si oui comment faire?

#16 Général » Espace superflus dans les champs character » 07/07/2009 17:22:13

zied
Réponses : 1

Je travaille sur une application web avec PHP et ZF.

A chaque fois que je récupère une variable de type character, il y a des espaces en plus en fin des champs.

Je suis obligé d'utiliser la fonction trim sous php à chaque fois.

Y'a-t-il un moyen de récupérer automatiquement ces champs sans les espaces en plus?

Merci

#17 Re : Installation » Installation PGAgent » 20/04/2009 15:38:35

Merci Gleu
Je t'assure que j'ai fais un post sur un autre forum Windows/dos avant de faire ce post mais j'ai pas eu de réponse jusqu'à maintenant.
Merci

#18 Re : Installation » Installation PGAgent » 20/04/2009 12:22:55

Merci Gleu.
J'ai lu cette page mais je ne trouve pas l'astuce pour créer un nom de fichier qui comporte la date du jour et que ça soit gérer dynamiquement.

#19 Re : Général » Question bête: Faire un dump avec du sql » 20/04/2009 11:30:58

Je vais utiliser pgAgent.
J'ai fait un post à ce sujet.
Il me reste un petite question :
http://forums.postgresql.fr/viewtopic.p … 1234#p1234

#20 Re : Installation » Installation PGAgent » 20/04/2009 11:18:13

J'ai réussi :
Exécution du script SQL de PGagent sur la base postgres
Création du fichier pgpass.conf dans %appdata%/postgresql de l'utilisateur.
Installation du service pgagent comme défini dans la base pgAdmin.

Maintenant une nouvelle question :

Je veux faire exécuter un dump de ma bd chaque jour à 18h.
Je veux que le fichier soit de la forme mabase_date_du_jour.sql

Comment faire ce script?

#21 Re : Installation » Installation PGAgent » 18/04/2009 12:53:17

J'ai suivi à la lettre la documentation pour l'installation du service et la création du fichier pgpass.conf

Nothing has chanched!

#22 Re : Installation » Installation PGAgent » 17/04/2009 11:41:18

Merci
Dans quel répertoire  faut-il le créer? quelle est le  contenu et le format de  ce fichier?

#23 Re : Installation » Installation PGAgent » 17/04/2009 09:25:38

une question :
je vois parler d'unfichier pgpass.conf mais je le trouve pas!
Faut-il le créer?

#24 Re : Installation » Installation PGAgent » 17/04/2009 09:24:20

Tout à fait!
ceci correspond aux paramètres trouvées dans la console Services de Windows.

Pour l'installation  J'ai essayé :

1 - "C:\Program Files\pgAdmin III\pgAgent" INSTALL pgAgent -u postgres -p password_sessionlocale hostaddr=127.0.0.1 dbname=mabse user=postgres

Et une autre fois

2 - "C:\Program Files\pgAdmin III\pgAgent" INSTALL pgAgent -u postgres -p password_sessionlocale hostaddr=127.0.0.1 dbname=pgadmin user=postgres password=password_base

#25 Re : Installation » Installation PGAgent » 16/04/2009 19:35:47

Voici ma chaine de commande

C:\Program Files\PostgreSQL\PgAdminIII 1.10\pgAgent-3.0\pgagent RUN pgAgent4 hostaddr=127.0.0.1 dbname=amidb user=postgres pass=motdepasse_serveur_pg


Le message d'erreur est le suivant :
Le service PostgreSQL Scheduling Agent sur ordinateur local a démarré puis s'est arrêté. Certains services peuvent s'arrêter automatiquement s'ils n'ont aucune tache à effectuer, par exemple, le service des alertes et les journaux de performance.

Pied de page des forums

Propulsé par FluxBB