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 :

Suppression de lignes dont la date de sortie renseignée est la plus grande


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut Suppression de lignes dont la date de sortie renseignée est la plus grande
    bonsoir,

    Je debute en sql et je ne trouve pas comment effectuer la requete suivante. J'ai une table qui contient:

    nom - prenom - date de naissance - date de sortie

    une même personne peut apparaitre plusieurs fois dans la table avec une date de sortie differente.

    Par exemple, je peux avoir :

    nom - prenom - date de naissance - date de sortie
    dupont marc 25/06/1976 03/04/2002
    martin jacques 12/02/1975 05/12/1999
    dupont marc 25/06/1976 24/11/2005
    Lemaire Florence 19/02/1979 null
    martin jacques 12/02/1975 null

    ce que je souhaite faire, c'est ne garder, pour chacune des personnes, que la ligne qui a la date de sortie la plus grande (ou null, ce qui signifie que la personne est toujours là)

    Dans mon exemple , le resultat serait :

    nom - prenom - date de naissance - date de sortie
    dupont marc 25/06/1976 24/11/2005
    Lemaire Florence 19/02/1979 null
    martin jacques 12/02/1975 null

    comment dois-je faire? en utilisant la clause "having" ou "group by"?

    Merci d'avance!

  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
    22 036
    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 : 22 036
    Billets dans le blog
    6
    Par défaut
    vous voulez faire un SELECT ou un DELETE ? Votre question n'est pas claire. Merci de respecter les consigne de postage....

    http://www.developpez.net/forums/ann....php?f=37&a=69

    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 très actif
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Par défaut Re : bonjour
    Pour le NULL faut revoir ton programme
    sinon si j'ai bien compris tu affiche juste la ligne qui contient la date de sortie max donc comme ça je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select nom,prenom from nomdetable where max(datedesortie)
    en espérant t'avoir aider
    cordialement @+

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    Bonjour,
    Merci de vos réponses, je souhaite faire un select pour afficher les personnes une seule fois (une seule ligne par personne) avec leur date de sortie max.

    Vous pourriez préciser votre phrase "revoir le programme pour le null"?

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Par défaut
    Salut,
    Pour répondre à ta question, au début, j'ai pensé à la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Nom, Prenom, DateNaissance, MAX(DateSortie)  
    FROM laTable
    GROUP BY Nom, Prenom, DateNaissance;
    PB : elle ne marche pas pour les date de sortie null.

    Du coup, voici la bonne requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Nom, Prenom, DateNaissance,
    DECODE(MAX(NVL(DateSortie,SYSDATE)),SYSDATE,NULL,MAX(DateSortie)) 
    FROM laTable
    GROUP BY Nom, Prenom, DateNaissance;
    Elle est un peu plus compliqué, mais normalement, ça devrai marcher !!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    Je vais essayer ca de suite et vousstiens au courant, Par contre, je comprendsrien a la requette, mais je vais étudier ça !

    Merci!

    bon, si je comprends rien c'est parce que je suis sur du SQL server 2005, pas oracle.
    Alors en remplacant le NVL par isnull et DECODE par une instruction 'CASE', ca fonctionne !

    encore merci ljo123!

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

Discussions similaires

  1. Récupérer la ligne dont la date est la plus récente
    Par Roflcho dans le forum Langage SQL
    Réponses: 10
    Dernier message: 03/02/2016, 11h45
  2. Lignes dont la date est inférieure à 2 jours
    Par cedrick21 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2011, 15h37
  3. Réponses: 1
    Dernier message: 12/06/2011, 09h19
  4. Réponses: 8
    Dernier message: 29/01/2010, 14h48
  5. [XL-2000] Suppression de lignes dont la valeur d'une colonne est particulière
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/01/2010, 20h35

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