|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 6 ![]() |
Bonjour,
J'ai un probleme surment tout bete que je n'arrive pas a résoudre. Prenons le cas d'une table toutes bêtes avec 2 champs : 1 champ date et heure et 1 champ entier avec une valeur Je veux par exemple récupérer les 24 valeurs d'une journée Je vais donc une requete Code :
SELECT date,valeur FROM public.donnees_heure WHERE date BETWEEN '2007-08-01 00:00:00' AND 2007-08-01 23:00:00' ORDER BY date Par exemple je voudrais: Code :
Si quelqu'un a une solution, je lui en serait grandemant reconnaissant.. |
||
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
La solution se trouve dans la fonction generate_series. Elle renvoit une liste de nombres, donc elle peut renvoyer de 0 à 24, qui multiplié par une 1h, fournit les différentes heures.
Voici ce à quoi je suis arrivé : Code :
|
||
|
|
00
|
|
|
#3 | |||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 6 ![]() |
Merci beaucoup, mais la fonction generate_series n'existe pas
Citation:
Code :
Je ne sais pas pourquoi, peut etre que quelques choses bloque le fait d'afficher des valeurs NULL ? est ce possibles? Merci encore |
|||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
Pour generate_series, ta version de PostgreSQL doit être vraiment ancienne parce que même la version 8.0 dispose de cette fonction (et on en est à la 8.2). Fais ton possible pour pouvoir mettre à jour ton serveur PostgreSQL.
|
|
|
00
|
|
|
#5 | ||||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 6 ![]() |
je dispose effectivement de la version PostgreSQL 7.4.8
Je ne suis pas admin de la machine je ne peux donc pas mettre a jour ce serveur... Mais je ne comprend pas pourquoi cette requete ne veut pas m'afficher ce que je veux. Peut etre que la table virtuel que je créé avec les SELECT et UNION n'est pas pris en compte comme si c'était une table... Je ne sais pas et je désèspère... Le but de cette requete est de créer un fichier xml qui va etre lu par du flash pour créer un graph Je dois d'abord renseigner l'abcisse avec Code :
Code :
je dois pas etre le seul a avoir ce genre de problème.. |
||||
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
Le problème vient de la partie WHERE (et j'ai fait la même erreur que toi). En ajoutant le « date BETWEEN x AND y », tu forces le fait que date doit être renseignée. Or tu peux avoir un créneau horaire où tu n'as pas de date dans ta table. Tu dois donc remplacer
par Code :
(date BETWEEN x AND y OR date IS NULL) |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 6 ![]() |
Merci encore pour tes efforts mais le résultat est bizarrement le meme...
voici la table en question Code :
J'ai vraiment tourné la requete dans tous les sens.. si j'inverse le RIGHT en LEFT et que j'enleve la condition sur les dates, le NULL apparait pour la table i mais avec le RIGHT aucun NULL n'apparait de l'autre coté... |
||
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
Pour moi, cela fonctionne bien après avoir ajouté le « OR date IS NULL ». Soit tu as ajouté d'autres éléments dans ta requête qui empêchent le renvoi de la ligne...
Dans un précédent message, il y avait aussi : Code :
AND id_st IN(SELECT id_st FROM public.stations WHERE id_zone IN($zone_selection)) AND id_pr=$id_pr |
|
|
00
|
|
|
#9 | ||||||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 6 ![]() |
voici donc ma requete modifié
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 6 ![]() |
finalement j'ai opté pour une solution annexe.. certes c'est surment pas optimisé, mais je n'ai pas d'autre solutions !!
Code :
un grand merci déja de m'avoir aider !! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com