Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 Re : Général » requete SELECT à 4 tables » 22/01/2013 11:02:47
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
#2 Re : Général » requete SELECT à 4 tables » 22/01/2013 10:04:48
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 ?
#3 Re : Général » requete SELECT à 4 tables » 22/01/2013 09:46:26
vous avez publié un post apres moi,
si, je souhaite en effet utiliser A3, j'avais ommis de l'ajouter dans ma requete.
#4 Re : Général » requete SELECT à 4 tables » 22/01/2013 09:29:31
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,
#5 Re : Général » requete SELECT à 4 tables » 22/01/2013 00:35:42
bah, je souhaiterais une valeur qui ne soit pas démultiplié...
#6 Général » requete SELECT à 4 tables » 21/01/2013 14:42:48
- unisol
- Réponses : 10
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.
#7 Re : PHP » creation user + database » 10/08/2012 14:19:56
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
#8 PHP » creation user + database » 10/08/2012 00:57:10
- unisol
- Réponses : 3
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
#9 Re : Installation » creation user limité a sa base » 16/03/2012 16:56:50
il est au format tar.
merci, je test !
#10 Re : Installation » creation user limité a sa base » 16/03/2012 16:37:53
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 ?
#11 Re : Installation » creation user limité a sa base » 16/03/2012 14:39:53
je me loggue avec :
su - postgres;
$psql
#postgres
à quelle moment on determine la base ?
#12 Re : Installation » creation user limité a sa base » 16/03/2012 14:10:47
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
#13 Re : Installation » creation user limité a sa base » 16/03/2012 13:33:40
j'ai compris mon erreur, on ne peut pas faire grant select sur une base, mais que sur des tables.
je cherche...
#14 Re : Installation » creation user limité a sa base » 16/03/2012 13:23:36
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.
#15 Installation » creation user limité a sa base » 16/03/2012 12:57:35
- unisol
- Réponses : 12
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
#16 Re : Installation » installation de postgresql-8.4.10 a distance sur un serveur Centos » 10/02/2012 17:35:42
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 !!!
#17 Re : Installation » installation de postgresql-8.4.10 a distance sur un serveur Centos » 10/02/2012 04:13:38
par contre ton lien baradji ramene un :
404: Page Not Found
#18 Re : Installation » installation de postgresql-8.4.10 a distance sur un serveur Centos » 10/02/2012 04:11:47
fallait cliquer sur le logo Centos tout de meme...
#19 Re : Installation » installation de postgresql-8.4.10 a distance sur un serveur Centos » 08/02/2012 20:39:40
Salut,
j'ai écris une procédure que tu trouveras à cette adresse . (fedora, centos )
http://www.unigest.fr/installation.php
crd
#20 Re : Installation » probleme initdb » 05/02/2012 19:15:11
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.
#21 Re : Installation » probleme initdb » 05/02/2012 19:10:51
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
@+
#22 Re : Installation » probleme initdb » 05/02/2012 19:03:58
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
#23 Installation » probleme initdb » 05/02/2012 18:54:00
- unisol
- Réponses : 4
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
#24 Re : Général » convertion de temps » 29/05/2011 12:18:19
est ce que dans les faits cela oblige t'il les utilisateurs à convertir eux meme le temps en centieme ?
#25 Re : Général » convertion de temps » 25/05/2011 18:48:55
Merci, ça marche nickel