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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    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
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

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

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    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 ?

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    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
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

+ 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