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 :

Aide pour la création d'une vue


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut Aide pour la création d'une vue
    Salut,

    Je voudrais créer une vue un peu particulière. je suis sous sybase 12.5

    J'ai une table WorkingDay avec 2 colonnes (ID et LastWorkingDay) Cette table enregistre à chaque fois qu'une tache tourne...

    Ce que je voudrais c'est obtenir une vue qui me représente les 3 derniers enregistrements de cette table, sous la forme suivante.
    ________________
    | t_1 | t_2 | t_3 |

    Cette vue doit avoir une seule ligne et
    t_1 doit contenir la dernière exécution de la tache
    t_2 l'avant dernière exécution
    t_3 l'avant avant dernière exécution

    En plus le jour J, elle doit afficher les données de la veille...


    Je ne vois pas comment attaquer le problème

    Merci bcp

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Donnez_nous un jeu d'essais, la réponse attendue et vos tables sous forme CREATE TABLE....

    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
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Petites questions juste pour savoir si j'ai compris ton modèle :
    - tu peux avoir plusieurs tâches, identifiées par l'ID ?
    - LastWorkingDay est un date... mais est-ce qu'il y a également l'heure ?

    Parce que ce sont ces critères qui permettront de déterminer quels sont réellement les "derniers enregistrements" : en gros, si tes champs donnent l'info du moment précis d'exécution, ta requête sera facile à faire. Sinon, il n'est pas possible de déterminer à priori les dernières lignes d'une table.
    (certains te diront qu'une table est un "sac de billes"... )

    Question subsidiaire :
    Les t_1, t_2, t_3 correspondent-ils aux dernières exécutions d'une même tâche, ou dernières exécutions tout court ?

  4. #4
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Salut,

    Merci pour vos messages mais j'ai réussi à pondre quelque chose qui semble fonctionner...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    select case when convert(date,a.LastWorkingDay) = convert(date,getdate())  
    			then b.LastWorkingDay  
    			else a.LastWorkingDay 
    			end as "j_1", 
    		case when convert(date,a.LastWorkingDay) = convert(date,getdate())  
    			then c.LastWorkingDay  
    			else b.LastWorkingDay 
    			end as "j_2", 
    		case when convert(date,a.LastWorkingDay) = convert(date,getdate())  
    			then d.LastWorkingDay  
    			else c.LastWorkingDay 
    			end as "j_3" 
    from 
    (select LastWorkingDay
    from WorkingDay 
    where LastWorkingDay = (select max(LastWorkingDay) from WorkingDay)) a, 
    (select  LastWorkingDay 
    from WorkingDay 
    where LastWorkingDay = 
                        (select max(LastWorkingDay) from WorkingDay 
                         WHERE LastWorkingDay<
                                    (SELECT MAX(LastWorkingDay) FROM WorkingDay))) b, 
     
    (select  LastWorkingDay 
    from WorkingDay 
    where LastWorkingDay = 
                        (select max(LastWorkingDay) from WorkingDay
                        WHERE LastWorkingDay <
                                    (SELECT MAX(LastWorkingDay) FROM WorkingDay
                                     WHERE LastWorkingDay<
                                                (SELECT MAX(LastWorkingDay) FROM WorkingDay)))) c,
     
    (select  LastWorkingDay 
    from WorkingDay 
    where LastWorkingDay = (select max(LastWorkingDay) from WorkingDay
                            WHERE LastWorkingDay <
                                    (SELECT MAX(LastWorkingDay) FROM WorkingDay
                                     WHERE LastWorkingDay<
                                                (SELECT MAX(LastWorkingDay) FROM WorkingDay
                                                  WHERE LastWorkingDay < (select max(LastWorkingDay) from WorkingDay))))) d
    GO
    hier soir je n'arrivais pas à refléchir, car trop fatigué :-D (vivement les vacances)

    mais ce matin tout frais, on dirait que c'est venu tout seul :-D

    Merci encore

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

Discussions similaires

  1. [AC-2003] Aide pour la création d'une requête complexe de non-correspondance ?
    Par [ZiP] dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/04/2010, 14h12
  2. Aide pour la création d'une requête
    Par Marc_27 dans le forum IHM
    Réponses: 1
    Dernier message: 15/12/2008, 12h26
  3. besoin d'aide pour la création d'une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/06/2008, 15h29
  4. Réponses: 3
    Dernier message: 26/06/2007, 14h53
  5. Réponses: 2
    Dernier message: 10/03/2006, 13h55

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