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 :

SELECT du premier records en fct de la date


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 15
    Points : 11
    Points
    11
    Par défaut SELECT du premier records en fct de la date
    Bonjour à tous,

    le problème que j'ai en face de moi est d'apres moi assez complexe donc je vais essayer d'etre le plus claire possible.

    J'ai une table ("TableAgenda") avec les colonnes suivantes:
    • Id (Int)
      DateTxt (varchar) (valeur ex: 9 juin 18h-19h.....)
      DateField (smalldatetime)
      Titre (varchar) (valeur ex: TroCool.....)
      Description (varchar) (valeur ex: venez nombreux c'est super.....)
      Langue (varchar) (3 possibilités de valeurs: Fr,Nl,Fr/Nl)
      Type (varchar) (4 possibilités de valeurs: EV.,1,2,3)

      Rem:
      Pour la colonne Type
      EV.: signifie un évenement
      1: un cours de niveau 1
      2: un cours de niveau 2
      3: un cours de niveau 3

      Pour la colonne Langue
      Fr: signifie français
      Nl: signifie Nederlands
      Fr/Nl: signifie français ou Nederlands


    J'aimerai faire un SELECT qui me retourne 2 records contenants DateTxt et Titre. C'est 2 records sont respectivement le prochain évenement et le prochain cours (niveau sans importance 1,2 ou 3) par rapport a la date courante en langue Fr ou FR/NL.

    je bloque sur DateField et Type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DateTxt, Titre
    FROM dbo.TableAgenda
    WHERE Langue IN ('Fr','Fr/Nl') AND DateField ??? CURRENT_TIMESTAMP
    Rem: si ça peut servir je suis sur MS-SQL

    J'attends avec impatience tout vos conseils un grand merci

  2. #2
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Salut,

    tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DateTxt, Titre 
    FROM dbo.TableAgenda 
    WHERE Langue IN ('Fr','Fr/Nl') 
    AND DateField =(
                               SELECT MIN(DateField) 
                               FROM dbo.TableAgenda 
                               WHERE DateField>CURRENT_TIMESTAMP
                               AND Langue IN ('Fr','Fr/Nl')
                               )

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    merci de ton coup de pouce. j'ai deja une solution pour mon prob avec 2 SELECT. Le premier pour trouver le cours prochain et le 2ieme pour l'evenement prochain.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DateTxt, Titre 
    FROM dbo.TableAgenda 
    WHERE Langue IN ('Fr','Fr/Nl') 
    AND DateField =( 
                               SELECT MIN(DateField) 
                               FROM dbo.TableAgenda 
                               WHERE DateField>CURRENT_TIMESTAMP 
                               AND Type IN ('1','2','3') 
                               )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DateTxt, Titre 
    FROM dbo.TableAgenda 
    WHERE Langue IN ('Fr','Fr/Nl') 
    AND DateField =( 
                               SELECT MIN(DateField) 
                               FROM dbo.TableAgenda 
                               WHERE DateField>CURRENT_TIMESTAMP 
                               AND Type IN ('EV.') 
                               )
    grand merci à toi

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Erreur de ma part, je comprends pas pour quoi mais visiblement ya un gros pepin. Pendant la journée tout a tourné normalement. Mais vla que depuis +ou- 00h00 (l'heure du crime) il suit la logique suivante
    ex:
    • 1ier record ( Langue= Fr , Type=EV., DateField= 12/7/2005)
      2ier record ( Langue= Nl , Type=3, DateField= 10/7/2005)
      3ier record ( Langue= Nl , Type=EV., DateField= 9/7/2005)
      4ier record ( Langue= Fr , Type=3, DateField= 8/7/2005)


    Avec le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DateTxt, Titre 
    FROM dbo.TableAgenda 
    WHERE Langue IN ('Fr','Fr/Nl') 
    AND DateField =( 
                               SELECT MIN(DateField) 
                               FROM dbo.TableAgenda 
                               WHERE DateField>CURRENT_TIMESTAMP 
                               AND Type IN ('1','2','3') 
                               )
    il me sort le record 4 ce qui est bon

    mais avec le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DateTxt, Titre 
    FROM dbo.TableAgenda 
    WHERE Langue IN ('Fr','Fr/Nl') 
    AND DateField =( 
                               SELECT MIN(DateField) 
                               FROM dbo.TableAgenda 
                               WHERE DateField>CURRENT_TIMESTAMP 
                               AND Type IN ('EV.') 
                               )
    Il me sort 0 record
    il aurai du me sortir le record 1. J'ai fait different test avec +ou- 10 records en DB. Visiblement, il ne tiens pas compte du "Langue IN ('Fr','Fr/Nl')" et du "Type IN ('1','2','3')". A chaque fois que la reponse que j'attendai n'été pas le records le plus proche de la date courante dans la DB il m'indique un gros VIDE.

    Bref je suis perdu dans le neant
    Et tout ça depuis minuit bon jvai faire dodo et de beaus réves de S,Q,L,...

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bon vla la solus que j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DateTxt, Titre
    FROM dbo.TableAgenda   
    WHERE DateField =(SELECT MIN(DateField)
                                     FROM dbo.TableAgenda
                                     WHERE Langue IN ('Nl','Fr/Nl') 
                                     AND DateField>CURRENT_TIMESTAMP  
                                     AND Type IN ('1','2','3'))
                AND Langue IN ('Nl','Fr/Nl')
                AND Type IN ('1','2','3')

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/09/2006, 17h22
  2. IE : Empêcher l'objet select au premier plan
    Par Sergejack dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 22/08/2006, 23h53
  3. select sur premier caractère non alphabétique
    Par blasted dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 11h58
  4. [débutant] select du premier record.
    Par Anonymous dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/06/2004, 09h17
  5. selection selon premier caractere d un champ
    Par jack-daniel dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/08/2003, 12h25

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