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 07/03/2013 11:00:55

marc73450
Membre

requete pour affiché une semaine

bonjour,

j'aimerais affiché les semaine pour un nombre de jours que je récupère.
je m'explique, j'ai dans une table un attribut date qui correspond à la date de vente d'un article que je peux que récupérer sous la forme 2013-03-07.
donc j'aimerais récupérer les date : 2013-03-01 ,2013-03-02 ,2013-03-03, 2013-03-04, 2013-03-05, 2013-03-06, 2013-03-07

donc que c'est jours soit égale à 1 semaine = 7 jours.
avez-vous une idée de la requête que cela peut être SVP ?

je sais pas si vous avez bien compris mon problème.

merci d'avance


Marc .

Hors ligne

#2 07/03/2013 11:06:33

rjuju
Administrateur

Re : requete pour affiché une semaine

Bonjour,


SELECT ('2013-03-07'::date - i) AS d FROM generate_series(0,6) i ORDER BY d ;

Hors ligne

#3 07/03/2013 11:11:17

marc73450
Membre

Re : requete pour affiché une semaine

merci rjuju de ta réponse rapide ! mais je comprend pas la requête que tu me donnes ?
cela m'affiche les années (7 fois)


Marc .

Hors ligne

#4 07/03/2013 11:26:49

Marc Cousin
Membre

Re : requete pour affiché une semaine

La mienne est 2 fois plus rapide (60 microsecondes contre 120 pour la tienne rjuju) smile

select generate_series(timestamptz '2013-03-07'-interval '6 day',timestamptz '2013-03-07',interval '1 day')::date;

Sinon, c'est quoi le problème de l'année marc73450 ?


Marc.

Hors ligne

#5 07/03/2013 11:27:04

rjuju
Administrateur

Re : requete pour affiché une semaine

Quelle version de postgres utilisez-vous ?

select ('2013-03-07'::date - i) as d from generate_series(0,6) i order by d ;
     d      
------------
 2013-03-01
 2013-03-02
 2013-03-03
 2013-03-04
 2013-03-05
 2013-03-06
 2013-03-07
(7 lignes)

Hors ligne

#6 07/03/2013 11:43:55

marc73450
Membre

Re : requete pour affiché une semaine

moi cela m'affiche que 2013.

select ('2013-03-07'::date - i) as d from generate_series(0,6) i order by d ;
     d     
------------
2013-03-01
2013-03-02
2013-03-03
2013-03-04
2013-03-05
2013-03-06
2013-03-07
(7 lignes)

comment exploité cela ?

ma version de postgresql est 1.16.1 .

Dernière modification par marc73450 (07/03/2013 11:48:29)


Marc .

Hors ligne

#7 07/03/2013 12:23:22

marc73450
Membre

Re : requete pour affiché une semaine

j'aimerais affiché ma base suivant une période choisis comme ceci :
http://cjoint.com/?CChluYAJVpN

je visualise mon tableau sur 2 jours !

est-ce plus facile de compréhension ?

merci


Marc .

Hors ligne

#8 07/03/2013 12:46:54

Marc Cousin
Membre

Re : requete pour affiché une semaine

Houla, je crois que j'ai compris. Vous voulez sélectionner les enregistrements de la table qui sont entre deux dates…

SELECT * FROM ma_table WHERE mon_champ_date >= '2013-03-07'-interval '6 days' and date < '2013-03-07'

C'est plutôt ça que vous cherchez ?


Marc.

Hors ligne

#9 07/03/2013 12:54:58

marc73450
Membre

Re : requete pour affiché une semaine

j'ai donc effectué cette requête :
SELECT * FROM casse WHERE date_casse >= '2013-03-06'-interval '6 days' and date < '2013-03-06'

mais j'ai cette erreur :
ERREUR:  syntaxe en entrée invalide pour le type interval : « 2013-03-06 »
LINE 1: SELECT * FROM casse WHERE date_casse >= '2013-03-06'-interva...

avez vous une idée ?


Marc .

Hors ligne

#10 07/03/2013 13:16:11

Marc Cousin
Membre

Re : requete pour affiché une semaine

ah… oui, il manque un cast ou un to_date sur la première date, il ne comprend pas:

SELECT * FROM casse WHERE date_casse >= date '2013-03-06'-interval '6 days' and date < '2013-03-06'


Marc.

Hors ligne

#11 07/03/2013 14:39:53

marc73450
Membre

Re : requete pour affiché une semaine

okay ca marche ! mais quel est la différence entre  ces 2 requêtes ?

SELECT * FROM casse WHERE date_casse between '2013-03-01' and '2013-03-06'

et

SELECT * FROM casse WHERE date_casse >= date '2013-03-06'-interval '6 days' and date_casse < '2013-03-06'

je veux affiché le champ casse_uvc et le champ casse_pvttc autant de fois que il y a de jours sélectionné .


Marc .

Hors ligne

#12 07/03/2013 14:43:19

Marc Cousin
Membre

Re : requete pour affiché une semaine

C'est juste que je n'étais pas sûr que vous saviez calculer les dates. Par contre la votre est meilleure: avec mon < il me manquait évidemment le 6 mars.


Marc.

Hors ligne

#13 07/03/2013 15:01:12

marc73450
Membre

Re : requete pour affiché une semaine

ducou ce n'est pas tout a fait ce que je voulais .
je veux affiché le champ casse_uvc et le champ casse_pvttc autant de fois que il y a de jours sélectionné .
avez vous une idée ?


Marc .

Hors ligne

#14 07/03/2013 15:04:49

Marc Cousin
Membre

Re : requete pour affiché une semaine

Vous voulez construire un tableau croisé dynamique avec une colonne par jour de la semaine, en SQL ?

C'est possible avec PostgreSQL, en utilisant tablefunc: http://docs.postgresql.fr/9.2/tablefunc.html


Marc.

Hors ligne

#15 07/03/2013 15:43:06

marc73450
Membre

Re : requete pour affiché une semaine

j'ai voulu essayé un exemple du liens que tu m'a donné :

mais cela me renvoie l'erreur !
ERREUR:  la fonction crosstab(unknown, unknown) n'existe pas
LINE 1: select * from crosstab(
                      ^
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

as-tu une idée ?

Dernière modification par marc73450 (08/03/2013 11:39:23)


Marc .

Hors ligne

#16 08/03/2013 11:38:42

marc73450
Membre

Re : requete pour affiché une semaine

j'ai donc réussi à faire cela :

select * from crosstab(
  'select libelle_article, date_casse, casse_uvc from casse order by 1',
  'select m from generate_series(1,12) m'
) as (
  libelle_article varchar,
  "Jan" int,
  "Feb" int,
  "Mar" int,
  "Apr" int,
  "May" int,
  "Jun" int,
  "Jul" int,
  "Aug" int,
  "Sep" int,
  "Oct" int,
  "Nov" int,
  "Dec" int
);

mais je n'arrive pas à les affiché jours par jours au lieu de mois par mois
mais en saisissant une valeur min de la date et une valeur max.
avez vous une idée ?
merci


Marc .

Hors ligne

#17 11/03/2013 14:47:06

marc73450
Membre

Re : requete pour affiché une semaine

personne aurait une idée de requête ?  parce que je n'y arrive pas du tout


Marc .

Hors ligne

#18 11/03/2013 14:49:18

Marc Cousin
Membre

Re : requete pour affiché une semaine

Honnêtement, sans un exemple de données, et un exemple précis de ce que vous voulez obtenir comme résultat, ça va être difficile de vous aider.

Si vous voulez un coup de main, mettez nous une table exemple avec une dizaine d'enregistrements, et le résultat que vous souhaitez.


Marc.

Hors ligne

#19 11/03/2013 14:55:03

marc73450
Membre

Re : requete pour affiché une semaine

voici ce que j'aimerais faire, affiché plusieurs article avec leur casse jours par jours, avec une date début et une date fin.

http://cjoint.com/?CChluYAJVpN

merci


Marc .

Hors ligne

#20 11/03/2013 14:56:45

Marc Cousin
Membre

Re : requete pour affiché une semaine

Ça, c'est juste de l'affichage. À quoi exactement ressemblerait la table de départ ? (avec des données qui correspondent au 3 ou 4 premiers enregistrements du tableau)


Marc.

Hors ligne

#21 11/03/2013 15:03:22

marc73450
Membre

Re : requete pour affiché une semaine

elle ressemble à cela ma table :

CREATE TABLE casse
(
  libelle_article text NOT NULL,
  code_ean bigint,
  libelle_rayon text NOT NULL,
  casse_uvc integer,
  casse_pvttc money,
  date_casse date
)

avec ces données dans la table : http://cjoint.com/?CCmjrRpleRp
résultat :

                 01/01/2013        ||          02/01/2013  ||           03/01/2013
            | casse(€)|casse(unité)|| casse(€)|casse(unité)|| casse(€)|casse(unité)|
article 1 | 12€50     |2                 | 13€       | 1               | 5€         | 3
article 2 | 12€       |21                | 13€       | 11              | 2€         | 1
article 3 | 1€50      |24                | 13€       | 8               | 9€         | 3
article 4 | 2€50      |2                 | 13€       | 1               | 51€        | 2

c'est ce que vous voulez ?

Dernière modification par marc73450 (12/03/2013 10:18:58)


Marc .

Hors ligne

#22 12/03/2013 15:42:44

damalaan
Membre

Re : requete pour affiché une semaine

Au final dans quelle application vous voulez afficher votre tableau : tableur, navigateur, sortie de fichier csv....?

Vu comme ça, si vous voulez un affichage de ce type dans pgadmin, je ne vois pas bien comment c'est possible, à moins de concaténer les champ casse_€ et casse_unité au préalable

Hors ligne

#23 12/03/2013 16:52:42

marc73450
Membre

Re : requete pour affiché une semaine

je l'affiche sur pentaho report designer ! avez-vous une idée ? je cherche une requête qui permettra d'affiché
comme cela


Marc .

Hors ligne

#24 12/03/2013 17:00:29

Marc Cousin
Membre

Re : requete pour affiché une semaine

Si c'est sur pentaho, même pas la peine de vous embêter avec crosstab sous postgres:

http://forums.pentaho.com/showthread.ph … gner-3-8-0


Marc.

Hors ligne

#25 12/03/2013 17:31:35

marc73450
Membre

Re : requete pour affiché une semaine

merci c'est ce que je voulais, mais en anglais pas facile.


Marc .

Hors ligne

Pied de page des forums