Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Voilà mon problème.
J'ai une table comportant les infos de fichiers avec les champs suivants :
- id (identifiant unique)
- name (nom du fichier)
- size (taille du fichier en octets)
- date (date de création du fichier)
Je souhaite récupérer les x premiers fichiers, classer par date, dont le poids total (comprendre la somme des colonnes "size" des x fichiers) est inférieure ou égale à une valeur définie (appelée TAILLE_MAX).
Comment réaliser une telle requête ?
Merci par avance pour votre aide.
J.
Hors ligne
Je vois pas ce que tu appeles « la somme des colonnes "size" ».
De ce que je comprends de ton énoncé, ça donne
SELECT *
FROM fichiers f
WHERE f.size <= TAILLE_MAX
ORDER BY f.date
LIMIT x
Un exemple concret de résultat attendu serait utile
damien clochard
http://dalibo.org | http://dalibo.com
Hors ligne
Merci pour ta réponse.
Un exemple concret de résultat attendu serait utile
Effectivement, voici un exemple :
J'ai les 4 enregistrements suivants :
- id:1, name:fichier1, size:100, date:01/01/10
- id:2, name:fichier2, size:100, date:02/01/10
- id:3, name:fichier3, size:100, date:03/01/10
- id:4, name:fichier4, size:100, date:04/01/10
Je veux obtenir les premiers enregistrements, classés par date dont le poids total est <= 350, j'obtiendrai donc :
- id:1, name:fichier1, size:100, date:01/01/10
- id:2, name:fichier2, size:100, date:02/01/10
- id:3, name:fichier3, size:100, date:03/01/10
Car la somme de id1.size + id2.size + id3.size <= 350
Cette requête est-elle réalisable ?
J.
Hors ligne
Bonjour, dans quelle version de PostgreSQL (si c'est en 8.4, il y a une solution assez simple).
Marc.
Hors ligne
dans quelle version de PostgreSQL
Version 8.3
J.
Hors ligne
Dommage.
Je ne pense pas que vous puissiez faire cette requête correctement avec une version antérieure à la version 8.4 : vous voulez faire une somme glissante, et c'est justement le rôle des 'window functions', rajoutées dans cette version. Je ne pense pas qu'il y ait de solution propre pour résoudre ça avec des fonctions SQL standard.
Dernière modification par Marc Cousin (26/04/2010 15:37:09)
Marc.
Hors ligne
Merci pour ta réponse. Oui c'est exactement ce que je veux faire : une somme glissante. Je vais donc devoir faire cela au niveau applicatif...
J.
Hors ligne
Ou passer en 8.4, si c'est possible. C'est de toutes façons la version qu'il est recommandé d'utiliser maintenant.
Marc.
Hors ligne
Pages : 1