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

Requêtes MySQL Discussion :

Récupérer la valeur de la ligne suivante dynamique


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Espagne

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Récupérer la valeur de la ligne suivante dynamique
    Bonjour à tous,

    Voici une commande, elle a plusieurs lignes car elle a été rejetée plusieurs fois avant d´etre validée dans le système de facturation. Je dois calculer les intervals de temps entre les rejets (cad: OPEN EU NPI - Ready for Transfer et Failed Data Transfer - Ready for Transfer et Data Transferred - Ready for Transfer)

    BILLING_DATA_STATUS STATUS_CHANGE_DATE
    Ready for Transfer 2014-03-27T05:01:04.0000000
    OPEN EU NPI 2014-04-03T15:50:29.0000000
    Ready for Transfer 2014-04-04T07:43:08.0000000
    OPEN EU NPI 2014-04-04T08:08:59.0000000
    Ready for Transfer 2014-04-15T11:29:38.0000000
    Failed Data Transfer 2014-04-17T11:52:27.0000000
    Ready for Transfer 2014-05-05T04:45:39.0000000
    OPEN EU NPI 2014-05-12T12:11:48.0000000
    Ready for Transfer 2014-08-07T13:48:24.0000000
    Data Transferred 2014-08-07T13:48:30.0000000

    J´utilise MySQL et je ne sais pas comment récupérer les valeurs des dates d´une ligne à l´autre de façon dynamique.

    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Utilisez les fonctions de fenêtrage LEAD et/ou LAG

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Utilisez les fonctions de fenêtrage LEAD et/ou LAG

    A +
    Elles ne sont pas disponibles sous MySQL.



    Natfancar, quel résultat attendez-vous à partir du jeu d'essai que vous avez fourni ?

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Espagne

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut LEAD FUNCTION
    Merci pour votre réponse SQL Pro. J´ai essayé la fonction Lead comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
    BILLING_DATA_STATUS,
    STATUS_CHANGE_DATE,
    LEAD(cast(STATUS_CHANGE_DATE) as date, 1, 0) OVER (ORDER BY STATUS_CHANGE_DATE) AS NEXT_STATUS_CHANGE_DATE,
    LEAD(cast(STATUS_CHANGE_DATE) as date, 1, 0) OVER (ORDER BY STATUS_CHANGE_DATE) - STATUS_CHANGE_DATE AS LEAD_TIME
    FROM
    tablename
    Where CONTRACT_NO_ = '1234567'
    ORDER BY 
    STATUS_CHANGE_DATE ASC
    Ça ne marche pas :-(
    Qu´est ce qui ne va pas dans ma requete?
    Merci

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    MySQL ne les supporte pas encore....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Espagne

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Elles ne sont pas disponibles sous MySQL.



    Natfancar, quel résultat attendez-vous à partir du jeu d'essai que vous avez fourni ?

    Bonjour,

    J´aimerais pouvoir récupérer le statut et la date suivante afin de pouvoir calculer en jour la durée de traitement de la commande

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Vous pouvez faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    SELECT 
    	A.BILLING_DATA_STATUS, 
    	A.STATUS_CHANGE_DATE, 
    	B.BILLING_DATA_STATUS AS NextBILLING, 
    	B.STATUS_CHANGE_DATE AS NextDate
    FROM LaTable A
    LEFT JOIN LaTable B
    	ON B.STATUS_CHANGE_DATE > A.STATUS_CHANGE_DATE
    LEFT JOIN LaTable C
    	ON C.STATUS_CHANGE_DATE > A.STATUS_CHANGE_DATE
    	AND C.STATUS_CHANGE_DATE < B.STATUS_CHANGE_DATE
    WHERE C.STATUS_CHANGE_DATE IS NULL

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Espagne

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse aieeeuuuuu. Cependant, je ne me suis pas bien expliquée car les champs que je cherche à récupérer sont sur une seule et meme table, donc pas besoin de faire de jointures.

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    La requête que je vous ai proposée porte bien sur une seule table, avec des auto-jointures.
    L'avez-vous au moins essayée ?

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Espagne

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    La requête que je vous ai proposée porte bien sur une seule table, avec des auto-jointures.
    L'avez-vous au moins essayée ?
    Ça marche! Je ne savais pas qu´il était possible de faire des auto-jointures...
    Par contre, ça rame beaucoup, j´ai du créer une table sur mon IMDD pour que la requete me retourne un résultat rapidement.
    Merci beaucoup pour votre aide en tout cas

  11. #11
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Il faudrait indexer (si ce n'est pas déjà fait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE INDEX IX_CHANGE_DATE ON LaTable (STATUS_CHANGE_DATE,BILLING_DATA_STATUS)
    Cela dit, privé des fonctions analytiques, MySQL n'est pas le plus adapté pour effectuer ce type de requêtes.

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : Espagne

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Il faudrait indexer (si ce n'est pas déjà fait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE INDEX IX_CHANGE_DATE ON LaTable (STATUS_CHANGE_DATE,BILLING_DATA_STATUS)
    Cela dit, privé des fonctions analytiques, MySQL n'est pas le plus adapté pour effectuer ce type de requêtes.

    Non, je n´avais pas crée d´index et je me vois dans l´obligation de le faire car ma table est trop importante en volume.
    Je me suis renseignée sur la création d´index, j´ai bien compris le concepte mais je ne sais pas comment l´appliquer dans mon cas.
    Avant d´entrer dans les détails, je dois vous dire que les données proviennent de Netezza. Dans un premier temps je crée une table sur mon imdd et ensuite j´applique la requete que vous m´avez conseillé pour récupérer les données des lignes suivantes. J´ai bien essayé de créer un index
    mais ça ne marche pas. A quel moment je dois indexer ma table?
    Merci

Discussions similaires

  1. [DOM] Comment récupérer la valeur d'une ligne cliquée dans un <DIV>?
    Par insane_80 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/07/2007, 16h11
  2. Réponses: 2
    Dernier message: 13/04/2007, 16h35
  3. Réponses: 5
    Dernier message: 03/04/2007, 11h08
  4. Récupérer la valeur d'une ligne dans une procédure stockée
    Par mobscene dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 07/12/2006, 19h29
  5. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51

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