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 :

Requête avec condition


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut Requête avec condition
    Salut à tous

    Je travaille présentement dans une procédure stockée.

    Je possède une colonne dateFin. Je veux que lorsque la colonne dateFin est null, mettre la date courante d'aujourd'hui.

    Le tri devra être fait sur cette colonne.

    Pour l'instant, j'ai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    10019	Développeur logiciel	2011-05-01 00:00:00.000	2011-08-01 00:00:00.000
    663	Programmeur d'application web	2009-01-01 00:00:00.000	2009-03-01 00:00:00.000
    10249	test2	2008-05-01 00:00:00.000	2009-09-01 00:00:00.000
    10248	test	2012-01-01 00:00:00.000	NULL
    664	Paysagiste	2008-08-01 00:00:00.000	2009-08-01 00:00:00.000
    Je veux ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    10019	Développeur logiciel	2011-05-01 00:00:00.000	2011-08-01 00:00:00.000
    663	Programmeur d'application web	2009-01-01 00:00:00.000	2009-03-01 00:00:00.000
    10248	test	2012-01-01 00:00:00.000	NULL
    10249	test2	2008-05-01 00:00:00.000	2009-09-01 00:00:00.000
    664	Paysagiste	2008-08-01 00:00:00.000	2009-08-01 00:00:00.000
    Sans que NULL possède la dateCourante. Elle servirait seulement pour le tri.

    La requête pour le moment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT noExperience, titrePoste, dateDebut, dateFin
    FROM Experiences INNER JOIN TypesExperiences AS te ON typeExperience = te.noTypeExperiences
    WHERE clefPortfolio = 'skB1n6sBRDWB9tK'
    ORDER BY ordre ASC, dateFin DESC
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    regardez du coté de case / when

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    Comment je peux remettre la valeur à null après le tri des données

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    en mettant vos conditions de tri dans l'order by

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY ordre ASC, COALESCE(dateFin, CURRENT_DATE) DESC
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Comment je peux remettre la valeur à null après le tri des données
    Je pense que la réponse d'Al1 doit convenir mais il existe ça aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT..
    FROM..
    WHERE..
    ORDER BY Champs NULLS LAST
    ou aussi
    ORDER BY Champs NULLS FIRST

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT noExperience, titrePoste, dateDebut, 
    	COALESCE(dateFin, CURRENT_DATE) AS dateFin
    FROM Experiences 
    INNER JOIN TypesExperiences AS te ON typeExperience = te.noTypeExperiences
    WHERE clefPortfolio = 'skB1n6sBRDWB9tK'
    ORDER BY ordre ASC, COALESCE(dateFin, CURRENT_DATE) DESC
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut

    Cela ne fonctionne pas

    Incorrect syntax near the keyword 'CURRENT_DATE'.

    Je fonctionne avec SQL Server 2008.

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    J'ai mis GETDATE() à la place de CURRENT_DATE et cela fonctionne.

    Pourquoi ?

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    Finalement, c'est pas ce que je voulais exactement.

    Je veux remettre la dateFin de test à null à la fin

  11. #11
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    J'ai mis GETDATE() à la place de CURRENT_DATE et cela fonctionne.

    Pourquoi ?
    Tout dépend du langage utilisé.
    Pour retourner la date du jour tu peux faire CURRENT_DATE en MySQL, GETDATE() en SQL Server, SYSDATE en Oracle...

    Et vu que tu es sur le forum Langage SQL, nous ne savons pas avec quel SGBD tu travailles

    Je veux remettre la dateFin de test à null à la fin
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT..
    FROM..
    WHERE..
    ORDER BY Champs NULLS LAST
    ou aussi
    ORDER BY Champs NULLS FIRST
    Certifié en Oracle, pour les autres langages je ne sais pas trop.
    A voir s'il n'existe pas d'équivalence.

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    J'ai fait ceci et cela semble bien fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY ordre ASC, dateDebut DESC, ISNULL(dateFin,GETDATE()) DESC

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tout dépend du langage utilisé.
    Pour retourner la date du jour tu peux faire CURRENT_DATE en MySQL, GETDATE() en SQL Server, SYSDATE en Oracle...
    CURRENT_DATE fait partie du standard SQL, c'est pour ça que je l'avais utilisé. Bizarre que SQL Server 2008 ne l'accepte pas !

    Idem pour COALESCE (standard) à la place de ISNULL (non standard).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  14. #14
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    COALESCE fonctionnait donc je devrait utiliser ceci à la place de ISNULL ?

  15. #15
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il vaut mieux s'habituer au SQL standard, ça permet de passer d'un SGBD à l'autre sans trop de difficultés, en tout cas moins que de ne connaître qu'un dialecte et pas le standard.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [MySQL] Requête avec condition sur un champ
    Par nonhosonno dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/02/2007, 14h00
  2. [MySQL] pb de requête avec conditions, débutant
    Par carelha dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 30/11/2006, 19h35
  3. Requête avec condition
    Par lolo_bob2 dans le forum Access
    Réponses: 1
    Dernier message: 08/06/2006, 19h59
  4. [Requête]Requête avec condition
    Par Miles Raymond dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 23/05/2006, 08h30
  5. Calcul requête avec conditions multiples
    Par Phullbrick dans le forum Access
    Réponses: 7
    Dernier message: 18/04/2006, 13h45

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