Vous n'êtes pas identifié(e).

#26 Re : Général » Dupliquer les valeurs d'une ligne vers les autres » 21/06/2012 15:03:50

flo

C'est dommage que vous n'ayez pas dit ce que vous vouliez exactement.
Il est possible qu'il y ait eu une solution simple en SQL.
Par exemple si vous vouliez faire une copie de chaque ligne vers la "précédente" dans l'ordre des clés, ça se fait également.

#27 Re : Général » histoire de count » 21/06/2012 13:46:19

flo
damalaan a écrit :

Bonjour,

j'ai une table qui peut ressembler à ça :

usine,esp
1621;2
1621;1
1622;1
1623;1
1624;2

mais je veux aussi savoir combien de usine ont esp en commun : je devrais avoir un résultat de 1 (1621;1 et 1621;2)

J'ai beau me creuser la cervelle, je n'arrive vraiment pas à comprendre ce que vous avez voulu dire.
Pourriez-vous expliquer différemment votre besoin?
Le résultat attendu est-il  :

usine, letrucpascompris
1621;1
1621;2

?

#28 Re : Général » Dupliquer les valeurs d'une ligne vers les autres » 20/06/2012 13:26:43

flo

Si vous voulez juste copier les colonnes valeur1, valeur2, ... valeur9 pour la valeur de clé 3 vers la ligne de valeur de clé2, une solution pourrait être de ce style :

update testtable
set (val1, val2)  = (t2.val1, t2.val2)
     from testtable t2
    where t2.cle = 3 and testtable.cle = 2

#29 Re : Général » Comment ajouter des liens » 14/06/2012 14:43:17

flo

Ce n'est pas le travail d'une base de données d'afficher et d'ouvrir un lien. C'est le travail de l'application. La base peut servir pour stocker l'URL d'un lien http , ou le chemin d'un fichier dans le système de fichiers (par exemple)
Je pense que vous confondez un peu tout.

Pour revenir à la base, comme dit kenrio, c'est du texte... Sous postgresql, character varying.

#31 Re : Général » Transaction annulée » 12/06/2012 17:19:18

flo

J'aurais tendance à dire que continuer après une erreur, ce n'est pas une manière propre de programmer...
Ceci dit, si c'est une série d'insertions indépendantes, tu peux toujours faire un point de sauvegarde (savepoint) entre chaque insert. Sur une erreur, faire un rollback to savepoint, et repartir sur les instructions suivant celle qui a causé l'erreur.
Enfin, je ne le ferai pas, surtout pas sans avoir analysé l'erreur au minimum (si tu te retrouves avec une erreur systématique comme un disque plein, ça va être long...).

#32 Re : Installation » installer postgis sur un cluster de deux noeuds sous windows server » 08/06/2012 23:36:27

flo

Pour compléter le commentaire de Gleu : ce que vous cherchez à faire n'est pas clair : pourquoi les 2 installations partageraient-elles le même dossier de base de données? Si votre but est que le 2ème serveur prenne le relais du 1er en cas de défaillance, c'est plutôt contradictoire même. Si vous avez un problème sur le disque, alors à quoi sert le 2ème "nœud"?
En effet, vous précisez que vous voulez en cas de défaillance, que le 2ème nœud prenne le relais. Cela ressemble à un besoin de réplication (ce que propose Gleu), et de bascule automatique (à ma connaissance, il faut un autre outil, PostgreSQL ne fait pas cela, ni Slony : http://www.slony.fr/documentation/slonyintro.html#introduction )
Vous devriez peut-être préciser (ou vous faire préciser si ce n'est pas vous le demandeur) quel est le besoin réel?


Quant à la demande d'aide, si vous avez besoin de formation et/ou de l'aide d'un professionnel, allez sur la liste ici : 
http://www.postgresql.org/support/professional_support/
Vous pouvez également voir la liste européenne, la plupart des entreprises française ayant des clients également au Maroc.

#33 Re : Optimisation » Requête mise en évidence par PgFouine » 05/06/2012 10:44:09

flo

C'est normal toutes ces conversions en texte dans la requête?

Sinon, c'est bien cette requête-là?

SELECT INTO RPointage P.*,A.*,OO.libelle
        FROM GEO.Pointage P
            LEFT OUTER JOIN GEO.O_f OO ON (P.of_sec=OO.of_sec)
            LEFT OUTER JOIN GEO.Vue_activite_geo A ON (P.id_ligne=A.id_ligne AND P.id_plan=A.id_plan AND P.id_fonction=A.id_fonction AND P.id_operation=A.id_operation)
        WHERE P.jour=CURRENT_DATE
        AND P.id_perso=$1
        ORDER BY P.heure DESC LIMIT 1;

Parce que je ne comprends pas pourquoi, dans le plan d'exécution fourni, il y a la table ligne, la table fonction...
cela non plus :

Filter: (((id_type_ptg_sst)::text = 'G'::text) AND (valide = 1::numeric) AND (to_char((('now'::text)::d
ate)::timestamp with time zone, 'YYYYMMDD'::text) <= to_char((((date_fin_valide)::text)::date)::timestamp with time zone, 'YYYYMMDD'::text)))

?

#34 Re : Général » problème d'insertion avec RETURNING rowid » 10/05/2012 10:07:42

flo

Mais pourquoi donc supprimer les trous? En avez-vous réellement besoin?
Comme dit rjuju, dans 99% des cas, on laisse la séquence faire son travail (elle garantit l'unicité, pas l'absence de trous)
Si on a vraiment besoin de ne pas avoir de trous, on fait autrement (mais attention alors à bien gérer la concurrence, et ne pas oublier la possibilité d'un rollback)

#35 Re : Général » problème d'insertion avec RETURNING rowid » 20/04/2012 10:29:18

flo

Je ne comprends pas bien : quel problème avez-vous vu sur votre séquence?
Que veut dire que votre database était "ouverte en CLI"?

#36 Re : Général » inventaire des données » 29/03/2012 14:49:43

flo

Si tes utilisateurs ont Open Office ou Libre Office, il y a peut-être moyen de créér des rapports OpenOffice Base (ou Libre Office). C'est plus simple, mais du coup moins adaptable qu'un site web maison.

#37 Re : Général » resultat incorrect d'une requete select » 22/03/2012 14:45:25

flo

Est-ce vous qui avez inséré les données dans la table? Par quel moyen? (pgAdmin, psql?)
Si oui, avez-vous commité la transaction?

#38 Re : Optimisation » Lenteur d'execution - PostgreSQL 8.2 » 20/03/2012 17:26:39

flo

Bon, tout d'abord il ne me semble pas qu'il manque des index dans les tables.

Christophe-LT a écrit :

Après avoir discuté avec la personne administrant le serveur il n'y a pas eu de vacuum ni reindex ni quoi que ce soit depuis le changement de serveur (soit plus d'un an). Autovacuum, quant à lui, n'a jamais été activé.
.

Ah, ça pourrait avoir un lien. notamment à cause de mauvaises statistiques.
http://docs.postgresqlfr.org/9.1/sql-analyze.html
En un an, je suppose que les données ont pas mal évolué?

Christophe-LT a écrit :

Comme vous l'aurez compris je n'y connais pas grand chose en administration de base de données, de plus PostgreSQL est une nouveauté pour moi...

Je suis surtout développeur en fait, mais avant de chercher un problème de paramétrage, de système (ce qui sort de mon domaine de compétence, surtout avec le contexte particulier de votre serveur), j'essayais d'éliminer des causes de développement (ce qui est le cas de la grande majorité des problèmes rencontrés).
Après, d'autres personnes vraiment expérimentées en administration vous aideront certainement si ce n'est pas cela.

Ceci dit, si toutes vos petites bases ont des soucis, c'est soit :
qu'une grande partie des développements ont des problèmes − cela arrive − ( je mets dans le développement la structure des données)
soit des problèmes d'administration

ou un peu de chaque...

#39 Re : Optimisation » Lenteur d'execution - PostgreSQL 8.2 » 20/03/2012 15:06:20

flo

J'ai du mal à bien comprendre la structure des tables  :  la colonne nom_cadeau appartient à la table gagnants? Et une mention des clés primaires, étrangères, et des index pourrait aider (pour voir s'ils ont été définis correctement ou non, car le parcours séquentiel sur la table lots m'étonne)

Ah, et aussi :
quel est le nombre de lignes de chacune des tables,
quel est le nombre total de lignes contenant un nom_cadeau qui contient "retrait"?

L'optimiseur se plante complètement là-dessus (il pense ne ramener qu'une ligne alors qu'il y en a 2348)

Flo

#40 Re : Général » table nombreux champs peu d' enr vs table peu de champs nombreux enr. » 31/01/2012 12:15:34

flo

Que veux-tu dire par : "Je ne suis pas persuadé quant à moi qu'un des deux cas doive forcément être plus efficace que l'autre".
J'aurai pensé au contraire que comme le 2ème est une sorte de "meta-schéma" c'était forcément moins efficace. C'est le sens de la 2ème partie de ta phrase?

#42 Re : Général » un dernier trigger pour la route » 26/01/2012 11:27:41

flo

Si vous n'avez pas compris, alors ne repose pas la même question. Cherchez... Ou demandez plutôt des exemples, de la doc...
Apparemment vous n'avez pas du tout compris comment on mettait à jour la table à partir du trigger. Je viens de relire la doc de Postgresql, elle est claire (notamment le 1er exemple)
http://docs.postgresql.fr/9.1/plpgsql-trigger.html
Lisez-la et revenez poser des questions sur ce que vous ne comprenez pas, ce sera plus constructif.
Si vous avez eu un cours Oracle, c'est le même principe de mise à jour.

#44 Re : Général » mettre valeur colonne dans le nommage d'un fichier.txt » 19/01/2012 15:34:34

flo

ordre_sql :='COPY (SELECT * FROM nom_table WHERE numero = num_id  LIMIT 1)
                 TO D:/EasyPHP-5.3.8.1/tmp/RI_AXI_0_'||numero||'.txt';

Je ne vois pas comment le TO... pourrait être interprété? Il n'y a pas de variable numero.
Ce n'est pas plutôt num_id qu'il faudrait mettre à la place de numero?

                 TO D:/EasyPHP-5.3.8.1/tmp/RI_AXI_0_'||num_id||'.txt';

#46 Re : Général » probleme de noob : requete et triggers » 10/01/2012 16:19:10

flo

(supprimé car faux, ça m'apprendra à faire 2 choses en même temps hmm  )

#47 Re : Général » probleme de noob : requete et triggers » 10/01/2012 12:03:12

flo

autre tentative :

UPDATE LGPUSERNEW SET NBARTICLECREE =
    (SELECT count(numsujet)
    FROM ALLSUJET
    WHERE auteur =
    (SELECT distinct nom
    from LGPUSERNEW)
    GROUP BY auteur );

ERREUR:  plus d'une ligne renvoyée par une sous-requête utilisée comme une expression

Moi non plus je ne comprends pas ce que vous voulez faire.
En tout cas, ça ne peut pas fonctionner, car la sous-requête :
SELECT distinct nom
    from LGPUSERNEW

ramène la LISTE des auteurs.
Vous demandez donc, dans la clause WHERE, de comparer "auteur" avec la liste de tous les noms présents dans la table LGPUSERNEW. Or il faudrait n'avoir qu'un seul nom...

Que voulez-vous donc faire avec cette requête?

#48 Re : Optimisation » Log d’événements : message systématique 'WARNING: there is no tran... » 03/01/2012 13:08:29

flo

Cela signifie qu'il a été fait un COMMIT ou un ROLLBACK inutile.
Cela dépend donc de l'application (il faudrait voir comment l'application gère les transactions).

Le log_line_prefix gère juste le préfixe, c'est plutôt du côté de log_min_messages que vous devriez regarder si vous voulez ne pas voir les warnings.
http://docs.postgresqlfr.org/9.1/runtim … gging.html

#49 Re : Général » Difficulté avec ALTER TABLE ALTER COLUMN » 22/12/2011 12:03:05

flo

euh oui il me semble (faudrait demander à Marc la définition exacte, c'est lui l'expert de la théorie des bases de données... ) mais je pensais que ce n'était pas la peine d'embêter un débutant avec ces questions.

#50 Re : Migration » Garder INTEGER comme type boolean » 22/12/2011 11:16:58

flo
gleu a écrit :

Le SQL est un standard. L'implémentation des différents moteurs, c'est une autre histoire smile

Oui, ma remarque était purement pratique : quand on tombe dans ce genre de problème, comment faire pour que cela impacte le moins possible le code? (dans le cas où on ne supporte qu'un moteur)

En pratique, pour ofthestreet qui doit gérer plusieurs moteurs dans le même code, si j'ai bien compris, je ferais plutôt la conversion booléen <-> entiers dans le code de l'application et je gèrerais tout avec des INTEGER en base. C'est pas très beau, mais au moins ce sera le même code pour tous les moteurs.

Pied de page des forums

Propulsé par FluxBB