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

SQLite Discussion :

SELECT avancé


Sujet :

SQLite

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut SELECT avancé
    Bonjour à tous,

    Je me rend compte que je suis vachement rouillé pour la construction des requêtes SQL avancées et je me (re)questionne sur la bonne manière de réaliser un SELECT capable de sélectionner des enregistrements en fonction du contenu d'autres champs.

    J'ai choisi ici d'utiliser des bases SQLITE3 interrogées en PHP5 via PDO.

    Bien entendu, je pourrais facilement contourner mon problème en faisant un select "global" et puis de manipuler l'objet PDO pour en extraire les données qui m'intéressent dans des boucles PHP... mais j'aimerais pouvoir rendre mon processus le plus performant possible en écrivant un SELECT capable de récupérer directement les enregistrements recherchés.

    Dans ma base "test" (plusieurs milliers d'enregistrements), je recois des évènements toutes les minutes, la valeur de l'évènement est un entier stocké dans "event", j'ai aussi un champ "times" qui a le format suivant : "14 07 2012 12:31:27"

    Je souhaiterais utiliser un SELECT capable de récupérer le premier "event" de chaque heure (donc tester "times" sur contenu 14 07 2012 12 , 14 07 2012 13 ... ) Une sorte de clause WHERE avec DISTINCT basé sur les 10 premiers caractères de "times" (peut être aussi via une regexp?)...

    Comme je vous le disait, je suis rouillé et j'aurais besoin de votre aide pour me remettre en scelle , comment écriveriez vous ce SELECT? SQLITE pourra t'il assumer ce genre de requetes?

    Merci

  2. #2
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut
    hummmm, pas de réactions ...

    Encore plus utile, je souhaiterais récupérer la température moyenne pour chaque heure existante dans la db.
    Je pense que cela doit être possible avec une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(event) FROM test GROUP BY ???times???
    ou les ??? seraient une fonction qui regroupe les évènements pour chaque heure différente détectée, basé sur times qui contient la date au format "14 07 2012 12:31:27" (j'ai aussi un autre champ qui contient la même information au format GMT)

    j'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(event) FROM test GROUP BY strftime('%H',times)
    Mais je ne reçois qu'une valeur unique, je devrais en recevoir autant qu'il y a d'heures depuis que la base de données écoute le capteur!

    merci pour vos idées!!

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut solution
    Je n'ai pas eu d'autre choix que de trouver seul la solution.
    Le format de la date dans la fontion sfrftime() doit être conforme (voir http://www.sqlite.org/lang_datefunc.html)
    si cela peut aider quelqu'un, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT AVG(event) FROM test GROUP BY strftime('%H',utctimes, 'unixepoch')
    avec utctimes = champ double au format heure unix
    C'était pourtant si simple

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je vous conseille de tenter votre chance dans d'autres catégories, genre la catégorie "langage SQL" quand vous voyez que personne ne répond

Discussions similaires

  1. Select avancé avec MS SQL Server
    Par mara1 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/03/2012, 09h17
  2. [Avancé] select _ where champ in (probleme_ici)
    Par autofill dans le forum SQL
    Réponses: 4
    Dernier message: 24/03/2010, 16h44
  3. Problème de selection sur un filtre avancé
    Par Thomas S dans le forum Excel
    Réponses: 2
    Dernier message: 22/08/2008, 11h38
  4. SELECT avec RAND() mais plus avancé
    Par Sebou San dans le forum Requêtes
    Réponses: 6
    Dernier message: 06/11/2005, 09h30
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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