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 :

Order BY date et empalcement du premier élément


Sujet :

Langage SQL

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut Order BY date et empalcement du premier élément
    Bonjour ;

    j'ai la table suivante :

    CLIENT(idClient,nom,prenom,dateNaissance).

    -je veux faire un select * et avoir les résultat de l'ordre suivant :

    le client qui a la date naissance null sera le premier de la liste,les autre serons triés par ordre décroissant de la date de naissance.

    Merci de me donner la clause where a mettre.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ça dépend de votre SGBD.
    Certains supportent la clause NULLS FIRST, d'autres non.

  3. #3
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    sinon un case when dans l'order by

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when date_naissance is null then 0 else 1 end
    A+
    Juvamine

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    avec Oracle 10 j'ai un simple 'order by desc' fait le nécéssaire et met les NULL en premier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from CLIENT
    order by dateNaissance desc
    Si tu veux être sûr de voir apparaitre les NULL en premier il suffit de remplacer les NULL par une date dans le futur (on ne peut pas avoir un date de naissance dans le futur sans être médium... mais cela c'est une autre histoire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from CLIENT
    order by nvl(dateNaissance,sysdate+1) desc

  5. #5
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par rafuoner Voir le message
    avec Oracle 10 j'ai un simple 'order by desc' fait le nécéssaire et met les NULL en premier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from CLIENT
    order by dateNaissance desc
    Si tu veux être sûr de voir apparaitre les NULL en premier il suffit de remplacer les NULL par une date dans le futur (on ne peut pas avoir un date de naissance dans le futur sans être médium... mais cela c'est une autre histoire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from CLIENT
    order by nvl(dateNaissance,sysdate+1) desc
    Le problème est que derrière ce n'est pas trié dans l'ordre après les NULL, c'est dans l'ordre décroissant...
    J'ai souvent à faire avec les case when pour gérer ces cas là moi
    Juvamine

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par juvamine Voir le message
    Le problème est que derrière ce n'est pas trié dans l'ordre après les NULL, c'est dans l'ordre décroissant...
    J'ai souvent à faire avec les case when pour gérer ces cas là moi
    ben c'est ce que demande le premier post non :
    le client qui a la date naissance null sera le premier de la liste,les autre serons triés par ordre décroissant de la date de naissance.
    Où alors j'ai rien compris à ta remarque... c'est possible on est vendredi, j'ai déja 85% du cerveau en week-end ;-)

    de plus avec ta solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY case when date_naissance IS NULL then 0 else 1 end
    Tous les NULL seront bien au début, mais tous les autres ne seront pas triés du tout puisqu'ils seront considérés comme ayant tous la meme valeur 1...

  7. #7
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    pour ma solution,il suffit de rajouter un ordre de tri après...

    bref, on a plus de nouvelles d'amine depuis le début du post
    Juvamine

Discussions similaires

  1. Select avec "date d'un premier élément" dans clause Where
    Par adrien357 dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/11/2008, 15h27
  2. Sélectionner le premier élément d'une ComboBox
    Par deubal dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/11/2005, 10h32
  3. [xslt] Limiter un for-each aux x premiers éléments
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 18/11/2005, 16h09
  4. Est-il possible de retourner au premier élément ?
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/09/2005, 14h15
  5. Réponses: 2
    Dernier message: 11/01/2005, 14h10

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