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

SQL Firebird Discussion :

Aide écriture requete


Sujet :

SQL Firebird

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut Aide écriture requete
    Bonjour,

    Soit T1 de la forme

    Col1 col2
    10h00 X1
    10h10 X2
    10h20 X3
    10h30 X4
    ...

    Soit T2 de la forme
    col1 col2
    10h01 St1
    10h04 St2
    10h09 St3
    10h11 St4
    10h14 St5
    10h32 St6
    10h38 St7
    10h42 St8
    ...

    Je voudrais ecrire une requete qui me retourne col1,col2 de T1 col2 de T2 pour les plages 10h00-10h10, 10h20-10h20,10h30-10h40... avec col2 qui vaut la valeur durant laquelle la durée de l'evenement dans col1 a été le plus long
    Cela donnerait

    col1 col2 col2
    10h00 X1 St2
    10h10 X2 St5
    10h20 X3 St6

    Je ne sais pas trop si c'est réalisable en requete SQL?

    Merci

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Tu pourrais donner le type de tes champs STP ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Excusez moi pour cet oubli

    Co1 de T1 et T2 sont des timestamp. Les autres sont des char

    Merci

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    tu es sûr de ton énoncé et des valeurs example que tu donnes ?

    parce que là je ne comprend pas ce que tu veux avec l'exemple que tu donnes
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    J'ai une table T1 qui possede des enregistrements toutes les 10'
    J'ai une table T2 qui possede des enregistrements horodatés.
    Pour un evenement de T1 qui dure 10' par exemple de 10h à 10h10 je recherche l'évenement dans T2 qui a duré le plus longtemps.
    Dans mon exemple l'evenement qui a duré le plus longtemps entre 10h et 10h10 c'est St2 car il a duré de 10h04 à 10h09 et ainsi de suite pour les autres.

    Je recherche donc tous les enregistrements par pas de 10' issus de T1 (il faut que je récupere col2 de T1) pour lesquels T2 possede l'enregietrement qui a duré le plus longtemps dans cette meme plage de periode.

    Merci

  6. #6
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Ce n'est pas possible d'avoir une colonne 'durée' dans T2 ? Ça faciliterait les choses

  7. #7
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par calou_33 Voir le message
    Je recherche donc tous les enregistrements par pas de 10' issus de T1 (il faut que je récupere col2 de T1) pour lesquels T2 possede l'enregietrement qui a duré le plus longtemps dans cette meme plage de periode.
    hum certes, mais c'est quoi le lien entre T1 et T2 ?

    parce qu'avec tes explications pour moi le résultat serait :
    col1 col2 col2
    10h00 X1 St3
    10h10 X2 St5
    10h20 NULL NULL
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut


    Ca serait 10H20 x3 St5
    Les tables ont des champs communs qui sont NOM_PROJET et REF_CLIENT
    Je recherche donc tous les enregistrements des projets Px possedant les REF_CLIENT RCx classés par pas de 10' dans lesquels l'evenement Stx a duré le plus longtemps.

    L'autre difficulté c'est que si dans une periode 10' on n'a pas d'enregistrements dans T2 cela signifie que l'etat n'a pas été changé il faut donc aller voir l'enregistrement précédent pour connaitre l'état à faire remonter!!

    Merci

  9. #9
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Si tes événements (stx) ont un code croissant, quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.col1, T1.col2 , MAX(T2.col2) FROM T1
    JOIN T2 ON T2.col1<(DATEADD(10 MINUTE TO T1.col1))
    GROUP BY 1,2
    ou avec tes autres champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.col1, T1.col2 , MAX(T2.col2) FROM T1
    JOIN T2 ON T2.col1<(DATEADD(10 MINUTE TO T1.col1))
    AND T1.NOM_PROJET=T2.NOM_PROJET 
    AND T1.REF_CLIENT=T2.REF_CLIENT
    WHERE T1.NOM_PROJET='bla' AND T1.REF_CLIENT='blabla' 
    GROUP BY 1,2
    sinon cela complexifie un peu les choses, mais c'est faisable
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  10. #10
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Je suis d'accord avec cette requête
    Citation Envoyé par makowski Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.col1, T1.col2 , MAX(T2.col2) FROM T1
    JOIN T2 ON T2.col1<(DATEADD(10 MINUTE TO T1.col1))
    GROUP BY 1,2
    Le problème c'est qu'il veut le tuple de T2 oú l'heure du tuple suivant moins l'heure du tuple courant sera la plus grande. (enfin si j'ai bien compris ...)

  11. #11
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par muad'dib Voir le message
    Le problème c'est qu'il veut le tuple de T2 oú l'heure du tuple suivant moins l'heure du tuple courant sera la plus grande. (enfin si j'ai bien compris ...)
    alors tu as mal compris ou pas tout lu :
    si dans une periode 10' on n'a pas d'enregistrements dans T2 cela signifie que l'etat n'a pas été changé il faut donc aller voir l'enregistrement précédent pour connaitre l'état à faire remonter
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Merci Philippe

  13. #13
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Au temps pour moi

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

Discussions similaires

  1. Aide écriture requete
    Par calou_33 dans le forum SQL
    Réponses: 2
    Dernier message: 16/02/2009, 22h20
  2. aide sur requete mysql
    Par digger dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/01/2006, 10h54
  3. Aide Pour Requete SQL Simple ... Merci d'avance :)
    Par thefutureisnow dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/12/2005, 11h39
  4. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 13h32
  5. [SQL] aide pour requete UPDATE SVP
    Par ganok dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/03/2005, 09h17

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