Vous n'êtes pas identifié(e).
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.
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
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
Merci
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
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;
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?
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 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
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?
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
Merci gleu.
C'est un détail qui m'a échappé
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)
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;
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"
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?
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
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
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.
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
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?
J'ai suivi à la lettre la documentation pour l'installation du service et la création du fichier pgpass.conf
Nothing has chanched!
Merci
Dans quel répertoire faut-il le créer? quelle est le contenu et le format de ce fichier?
une question :
je vois parler d'unfichier pgpass.conf mais je le trouve pas!
Faut-il le créer?
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
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.