Vous n'êtes pas identifié(e).
merci à vous marc,
je republie la requete au complet pour les autres..
**//
SELECT tmp1.*, coalesce(sum(A3.dpa * A3.quantite),0) as Cout_pieces, tmp1.Cout_MO + coalesce(sum(A3.dpa * A3.quantite),0) as total
FROM
(SELECT E1.id_entete_ot,
E1.date_ot,
E1.service,
E2.nro_equipement,
E2.designation,
E2.nom_organe,
E1.description,
E2.id_equipement,
coalesce(sum(O2.temps),0) AS Temps,
coalesce(sum(O2.temps * O2.cout_pe),0) AS Cout_MO
FROM entete_ot E1
LEFT OUTER JOIN equipements E2 ON (E1.id_equipement = E2.id_equipement)
LEFT OUTER JOIN ot O2 ON (E1.id_entete_ot = O2.id_entete_ot)
where E1.date_ot between '01/01/2012' and '31/12/2012' and E1.service like 'ACCREDITATION QUALITE%' and E2.type_equipement like '%' and lower(E2.nom_organe) like '%' and lower(E2.designation) like '%'
GROUP BY E1.id_entete_ot,
E1.date_ot,
E1.service,
E2.nro_equipement,
E2.designation,
E2.nom_organe,
E1.description,
E2.id_equipement) AS tmp1
LEFT JOIN articles_ot A3 ON (tmp1.id_entete_ot = A3.id_entete_ot)
GROUP BY tmp1.id_entete_ot,
tmp1.date_ot,
tmp1.service,
tmp1.nro_equipement,
tmp1.designation,
tmp1.nom_organe,
tmp1.description,
tmp1.id_equipement,
tmp1.temps,
tmp1.Cout_MO
Nickel, merci ça marche !!!!
ma valeur n'est plus démultipliée.
encore une chose, avez vous une solution pour que mon addition se fasse, lorsque
une somme renvoi un null ?
vous avez publié un post apres moi,
si, je souhaite en effet utiliser A3, j'avais ommis de l'ajouter dans ma requete.
En effet j'ai ommis d'ajouter l'utilisation de A3
voici ce que je souhaiterais
*//
SELECT
E1.id_entete_ot, E1.date_ot, E1.service, E2.nro_equipement, E2.designation, E2.nom_organe, E1.description,
sum(O2.temps) as Temps,
sum(O2.temps * O2.cout_pe) as Cout_MO,
sum(A3.dpa * A3.quantite) as Cout_pieces,
sum(O2.temps * O2.cout_pe) + sum(A3.dpa * A3.quantite) as Cout_Total,
E2.id_equipement
FROM
entete_ot E1 left outer join equipements E2 on (E1.id_equipement = E2.id_equipement)
left outer join ot O2 on (E1.id_entete_ot = O2.id_entete_ot)
left outer join articles_ot A3 on (E1.id_entete_ot = A3.id_entete_ot)
group by
E1.id_entete_ot, E1.date_ot, E1.service, E2.nro_equipement, E2.designation, E2.nom_organe, E1.description, E2.id_equipement
*//
pour être complet dans, il se peut, que par exemple des valeurs n'existes pas :
sum(A3.dpa * A3.quantite) as Cout_pieces, -> renvoi NULL
sum(O2.temps * O2.cout_pe) -> = 50
ce qui a pour effet de ne pas additionner
sum(O2.temps * O2.cout_pe) + sum(A3.dpa * A3.quantite) as Cout_Total,
50 + NULL = NULL
comment solutionner cette partie ?
merci par avance,
bah, je souhaiterais une valeur qui ne soit pas démultiplié...
bonjour,
j'ai une requete de ce type
//**
SELECT E1.id_entete_ot, E1.date_ot, E1.service, E2.nro_equipement, E2.designation, E2.nom_organe, E1.description, sum(O2.temps) as Temps, E2.id_equipement
FROM entete_ot E1 left outer join equipements E2 on (E1.id_equipement = E2.id_equipement)
left outer join ot O2 on (E1.id_entete_ot = O2.id_entete_ot)
group by E1.id_entete_ot, E1.date_ot, E1.service, E2.nro_equipement, E2.designation, E2.nom_organe, E1.description, E2.id_equipement
//**
la colonne Temps est correctement calculée.
si je modifie la clause FROM comme ceci avec une requete à 4 tables :
//**
SELECT E1.id_entete_ot, E1.date_ot, E1.service, E2.nro_equipement, E2.designation, E2.nom_organe, E1.description, sum(O2.temps) as Temps, E2.id_equipement
FROM entete_ot E1 left outer join equipements E2 on (E1.id_equipement = E2.id_equipement)
left outer join ot O2 on (E1.id_entete_ot = O2.id_entete_ot)
left outer join articles_ot A3 on (E1.id_entete_ot = A3.id_entete_ot)
group by E1.id_entete_ot, E1.date_ot, E1.service, E2.nro_equipement, E2.designation, E2.nom_organe, E1.description, E2.id_equipement
//**
la colonne Temps se voit démultiplié et renvoit une valeur incorrecte
le schema souhaité est :
pour une valeur E1 -> une valeur E2
pour une valeur E1 -> une ou plusieurs valeurs O2
pour une valeur E1 -> une ou plusieurs valeurs A3
merci pour votre aide.
Bonjour,
merci pour votre réponse,
je confirme que le script marche bien,
mais, j'ai du donner des droit superuser (pas sécurisé) pour y arriver:
si la commande :
CREATE USER utilisateur WITH ENCRYPTED PASSWORD 'mot_de_passe';
se passe bien
la commande suivante genere une erreur :
CREATE DATABASE dbtest WITH OWNER = test1 TEMPLATE = modele ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8' CONNECTION LIMIT = -1
ERREUR: doit être un membre du rôle « test1 »
********** Erreur **********
ERREUR: doit être un membre du rôle « test1 »
État SQL :42501
---
voici les caractéristiques de mon user avec le quel j'exécute ces commandes :
CREATE ROLE userchef LOGIN
NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION;
--
merci pour votre réponse
Bonjour,
je souhaiterais faire executer un fichier bash suivant depuis une page PHP. Mais je me heurte au probleme des droits d'execution.
En effet, depuis une page PHP, c'est l'utilisateur www-data qui est actif, ce provoque un probleme.
------------------------------------------------------------
#!/bin/bash
su - postgres -c "psql -c \"create user $1 WITH ENCRYPTED PASSWORD '$2';\""
su - postgres -c "psql -c \"CREATE DATABASE $1 WITH OWNER = $1 TEMPLATE = modele ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8' CONNECTION LIMIT = -1;\""
su - postgres -c "psql -c\"GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to $1;\" $1"
--------------------------------------------------------------
Donc, est il possible de créer un script pure PHP, du genre qui marche...
$dbconn = pg_connect("host=localhost user='monuser' password='mon*mot*passe' port='5433' ")
or die('Connexion impossible : ' . pg_last_error());
$query1 = "CREATE USER 'user1' WITH ENCRYPTED PASSWORD '".$2."'";//créer un nouvel utilisateur
$result1 = pg_query($query1) or die('Échec de la requête : ' . pg_last_error());
$query2 = "ALTER ROLE 'user1' WITH CREATEDB";
$result2 = pg_query($query2) or die('Échec de la requête : ' . pg_last_error());
$query3 = "CREATE DATABASE 'user1' WITH OWNER = 'user1' TEMPLATE = modele ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8' CONNECTION LIMIT = -1";
$result3 = pg_query($query3) or die('Échec de la requête : ' . pg_last_error());
merci par avance de votre aide
il est au format tar.
merci, je test !
merci, j'avance
j'ai fais :
-bash-4.1$ psql -d dbjean
dbjean=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public
'pas de message
dbjean=#GRANT SELECT, DELETE, UPDATE, INSERT, CONNECT ON ALL TABLES IN SCHEMA public
'pas de message non plus
à présent j'arrive à me connecter.
merci à vous.
depuis la ligne de commande et sous un systeme linux, comment
restaurer un backup vers une base fraichement créee ?
je me loggue avec :
su - postgres;
$psql
#postgres
à quelle moment on determine la base ?
justement, quel est la synthaxe exact, ce qui me troublen c'est comment postgres determine la base sur la quelle ont agit.
on a un nom de nom_schéma, ce suffit -il ?
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA nom_schéma
j'ai compris mon erreur, on ne peut pas faire grant select sur une base, mais que sur des tables.
je cherche...
j'ai une base appartenant à jean !
postgres=# CREATE DATABASE dbjean WITH OWNER = jean ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'fr_FR.UTF-8' LC_CTYPE = 'fr_FR.UTF-8' CONNECTION LIMIT = -1;
mais :
postgres=# GRANT SELECT, INSERT, UPDATE, DELETE, CONNECT ON DATABASE dbjean TO jean;
ERREUR: droit SELECT invalide pour la base de données
toujours, merci pour votre aide.
Bonjour,
j'ai des difficultés à créer un utilisateur, qui ne peut pas lister les autres bases
et qui aurait des droits communs sur sa base :
postgres=# create user jean;
CREATE ROLE
postgres=# alter role jean with createdb;
ALTER ROLE
postgres=# ALTER USER jean WITH ENCRYPTED PASSWORD 'azerty';
ALTER ROLE
postgres=# create database jean ;
CREATE DATABASE
postgres=# psql -d template0 -c "alter user jean with password 'azerty'"
dans PGadmin j'ai bien une base une base qui porte le nom jean, mais impossible d'importer quoi que ce soit dessus
si je créeé une base dbjean et que j'essaie de l'attribuer à jean, j'ai une erreur:
"doit être membre du role jean"
bref, un peu perdu
merci pour votre aide
merci baradji, mais j'avoue que ce billet me pertube une peu.
tu demandes de l'aide le 03/02/2012
et aujourd'hui on est a se demander si tu es la meme personne.
belle progression !!!
par contre ton lien baradji ramene un :
404: Page Not Found
fallait cliquer sur le logo Centos tout de meme...
Salut,
j'ai écris une procédure que tu trouveras à cette adresse . (fedora, centos )
http://www.unigest.fr/installation.php
crd
neanmpins une question pour les spécialistes Linux
pourquoi ai je des caratères bizarre à la place des latins ?
merci
[root@s16054678 data]# su -lc 'service postgresql-9.1 initdb'
Initialisation de la base de données : [ OK ]
[root@s16054678 data]# su -lc 'service postgresql-9.1 start'
Démarrage du service postgresql-9.1 : [ OK ]
[root@s16054678 data]# su - postgres
-bash-4.1$ psql
psql (9.1.2)
Saisissez « help » pour l'aide.
C'est bon j'ai trouvé (je suis...)
il faut (tres simplement)
# su -lc 'service postgresql-9.1 initdb'
j'ai lu sur une page wiki que le service postgres 9.x et supérieur se nomme
postgresql-9.0
et betement je m'obstinait
@+
J'apporte des éléments supplémentaires qui me semblent louches :
j'ai une centos or cette ligne me semble louche
postgresql91-9.1.2-1PGDG.rhel6.x86_64.rpm
****
l'edition du fichier CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://update.onlinehome-server.info/distribution/centos/$releasever/os/$basearch/
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://update.onlinehome-server.info/distribution/centos/$releasever/updates/$basearch/
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
#additional packages that may be useful
[extras]
"CentOS-Base.repo" 57L, 2446C written
l'install elle meme donne ça :
su -c 'yum install postgresql-server'
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
base | 3.7 kB 00:00
extras | 3.5 kB 00:00
updates | 3.5 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package postgresql91-server.x86_64 0:9.1.2-1PGDG.rhel6 will be installed
--> Processing Dependency: postgresql91 = 9.1.2-1PGDG.rhel6 for package: postgresql91-server-9.1.2-1PGDG.rhel6.x86_64
--> Running transaction check
---> Package postgresql91.x86_64 0:9.1.2-1PGDG.rhel6 will be installed
--> Processing Dependency: postgresql91-libs = 9.1.2-1PGDG.rhel6 for package: postgresql91-9.1.2-1PGDG.rhel6.x86_64
--> Running transaction check
---> Package postgresql91-libs.x86_64 0:9.1.2-1PGDG.rhel6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================
Package Arch Version Repository Size
================================================================================================
Installing:
postgresql91-server x86_64 9.1.2-1PGDG.rhel6 pgdg91 3.5 M
Installing for dependencies:
postgresql91 x86_64 9.1.2-1PGDG.rhel6 pgdg91 949 k
postgresql91-libs x86_64 9.1.2-1PGDG.rhel6 pgdg91 186 k
Transaction Summary
================================================================================================
Install 3 Package(s)
Total download size: 4.6 M
Bonjour,
j'ai déjà installé un postgresql sur une centos 5 mais la ça coince sur une 6
le initdb ne marche pas
#su -lc 'service postgresql initdb'
postgresql: service non reconnu
#su -lc 'service postgresql-9.0 initdb'
postgres-9.0: service non reconnu
#service postgresql-9.0 initdb
postgresql-9.0: service non reconnu
voici les traces de l'install
merci pour votre aide.
*****
Downloading Packages:
(1/3): postgresql91-9.1.2-1PGDG.rhel6.x86_64.rpm | 949 kB 00:01
(2/3): postgresql91-libs-9.1.2-1PGDG.rhel6.x86_64.rpm | 186 kB 00:00
(3/3): postgresql91-server-9.1.2-1PGDG.rhel6.x86_64.rpm | 3.5 MB 00:00
------------------------------------------------------------------------------------------------
Total 1.9 MB/s | 4.6 MB 00:02
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : postgresql91-libs-9.1.2-1PGDG.rhel6.x86_64 1/3
Installing : postgresql91-9.1.2-1PGDG.rhel6.x86_64 2/3
Installing : postgresql91-server-9.1.2-1PGDG.rhel6.x86_64 3/3
Installed:
postgresql91-server.x86_64 0:9.1.2-1PGDG.rhel6
Dependency Installed:
postgresql91.x86_64 0:9.1.2-1PGDG.rhel6 postgresql91-libs.x86_64 0:9.1.2-1PGDG.rhel6
Complete!
[root@s16054678 ~]# su - postgres
-bash-4.1$ psql
psql: n'a pas pu se connecter au serveur : Aucun fichier ou dossier de ce type
Le serveur est-il actif localement et accepte-t-il les connexions sur la
socket Unix « /tmp/.s.PGSQL.5432 » ?
à ce message d'erreur je sais qu'il faut initialiser la base avec un initdb qui a marché sur ma derniere install sur centos 5
est ce que dans les faits cela oblige t'il les utilisateurs à convertir eux meme le temps en centieme ?
Merci, ça marche nickel