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

SQL Oracle Discussion :

toujours pb sql


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 119
    Points
    119
    Par défaut toujours pb sql
    2 tables : personnes, actions

    tables personnes : (idPers, nomPers, prenomPers)
    tables developpement: (iddev, #idPers, datedev)

    La meme personne peut effectuer différents développement a différentes dates.

    Comment récupérer les idPers distinct de la table developpement qui sont dans la table personnes et en meme temps nomPers et prenomPers , sachant que ceux ci doivent etre trier par date decroissante (j'entends par la ne sélectionner que la plus récente) ... ?

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    KEEP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select iddev, 
    max(datedev) datedev, 
    max(idpers)keep(dense_rank first order by datedev desc,idpers) idpers,
    max(nompers)keep(dense_rank first order by datedev desc,idpers) nompers,
    max(prenompers)keep(dense_rank first order by datedev desc,idpers) prenompers
    from personnes, developpement
    where idpers=#idpers
    group by iddev

    edit: DESC

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 119
    Points
    119
    Par défaut
    je suppose qu'elle doit fonctionner mais elle doit etre compatible mysql également ... merci pour la réponse en tout cas !

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Je ne pense pas que la requete de Laurent soit bonne, ce serait plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT idpers, 
    	MAX(datedev) datedev, 
    	MAX(nompers)KEEP(DENSE_RANK FIRST ORDER BY datedev DESC) nompers,
    	MAX(prenompers)KEEP(DENSE_RANK FIRST ORDER BY datedev DESC) prenompers
    FROM personnes, developpement
    WHERE idpers=#idpers
    GROUP BY idpers
    POur le faire compatbile avec mysql, je suis en train, je reposte
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Arf.. en fait c'est tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT idpers, nomPers, prenomPers,
    	MAX(datedev) datedev
    FROM personnes, developpement
    WHERE idpers=#idpers
    GROUP BY idpers, nomPers, prenomPers
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    McM
    SELECT idpers, nomPers, prenomPers,
    	MAX(datedev) datedev
    FROM personnes, developpement
    WHERE idpers=#idpers
    GROUP BY idpers, nomPers, prenomPers
    Je ne pense pas qu'on puisse faire un MAX dans un selecte + autre sélection :
    Je m'explique : Select Max(champ1) from table ==> OK
    Seletc Max(champ1), champ2 from table ==> KO.

    A+
    LBO72.

  7. #7
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par LBO72 Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    McM
    SELECT idpers, nomPers, prenomPers,
        MAX(datedev) datedev
    FROM personnes, developpement
    WHERE idpers=#idpers
    GROUP BY idpers, nomPers, prenomPers
    Je ne pense pas qu'on puisse faire un MAX dans un selecte + autre sélection :
    Je m'explique : Select Max(champ1) from table ==> OK
    Seletc Max(champ1), champ2 from table ==> KO.

    A+
    LBO72.
    euh, ben si, c'est justement là qu'intervient le GROUP BY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select max(champ1), champ2 from table ==> KO 
    
    Select max(champ1), champ2 from table group by champ2 ==> OK

  8. #8
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Merci Loyd1974

    On apprend toujours sur ce site
    A+
    LBO72.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/07/2010, 10h50
  2. fonction exists toujours vrai transact sql
    Par bobby51 dans le forum Développement
    Réponses: 6
    Dernier message: 27/03/2009, 11h09
  3. [SQL]trier un sous formulaire par une date (par toujours connue)
    Par blin07 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/04/2007, 09h45
  4. Pourquoi cette requête SQL ne marche pas toujours
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 14/12/2006, 17h29
  5. SQL server et toujours des problèmes de dates ...
    Par constantin dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 28/10/2005, 12h19

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