IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête avec "date précédente"


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Requête avec "date précédente"
    Bonjour,
    Je cherche à afficher pour la station 34, la valeur du débit (à savoir : 0.178) à la date précédente de 2014-11-13 (à savoir : 2014-08-06) pour la table observation.

    Table observation :
    id_station debit date
    34 0.2 2014-07-29
    22 0.075 2014-10-06
    34 0.178 2014-08-06
    22 0.105 2014-10-13
    34 0.231 2014-11-13
    22 0.104 2014-11-20

    Requete:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select observation.debit
    from observation
    where observation.id_station = 34 and observation.date = date précédente date('2014-11-13')


    Merci.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    'date' est un mauvais nom de colonne car c'est un mot réservé du langage SQL.

    La date précédent le 13/11/2014 est la date maxi inférieure au 13/11/2014.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT debit
    FROM observation 
    WHERE id_station = 34 
    	AND date = 
    	(
    		SELECT MAX(date)
    		FROM observation
    		WHERE id_station = 34
    			AND date < '2014-11-13'
    	)
    Mais votre besoin est-il vraiment pour une station et une date précises ou est-il plus généraliste ? Du genre quel est l'avant dernier débit enregistré pour chaque station ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup CinePhil.
    D'accord pour le champ "date", c'est que j'ai raccourci le nom.
    Oui c'est de façon générale, pr une date donnée, savoir si le débit est supérieur ou inférieur au débit à la date précédente mais à priori votre code me va bien, à moins que vous voyez autre chose.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ma dernière phrase supposait que vous lanceriez peut-être ctte requête dans une boucle afin d'avoir avants derniers débits de toutes les stations alors qu'on peut obtenir ce résultat en une seule requête mais si ce n'est pas le cas, je pense que vous pouvez cliquer sur
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Quel est votre SGBD ? Vous pourriez utiliser la fonction de fenêtrage LAG s'il le supporte.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Quel est votre SGBD ? Vous pourriez utiliser la fonction de fenêtrage LAG s'il le supporte.
    En fait j'utilise des tables qui sont sous PostGreSQL, dans un outil de reporting.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Sous PostgreSQL la fonction LAG existe bel et bien.
    En relisant un peu mieux votre besoin je pense que ce n'est pas nécessaire : la solution de CinePhil est très bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête avec champ NULL simple quote
    Par tidou95220 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/07/2012, 13h15
  2. requête avec les dates
    Par Tayhair dans le forum Access
    Réponses: 2
    Dernier message: 17/03/2006, 21h19
  3. SQL Requête avec des dates
    Par dahu29 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/03/2006, 18h20
  4. [JDBC] Requête avec une date sous la forme dd/MM/yyyy
    Par sylviefrfr dans le forum JDBC
    Réponses: 6
    Dernier message: 12/11/2005, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo