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 :

[debutant]Récupération d'une seule ligne d'un groupe


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 77
    Points : 58
    Points
    58
    Par défaut [debutant]Récupération d'une seule ligne d'un groupe
    Salut
    Je cale sur un truc sûrement tout simple, mais SQL server n'arrête pas de me parler du problème d'agrégat... je sollicite votre aide.
    J'ai une table avec 6 champs (résultat d'un UNION sur 2 tables) :

    1234,"pouet@free.fr",1,2,2,4521
    1158262,"toto@hotmail.com",4,2,1,456721
    1158262,"toto@hotmail.com",4,2,2,95421
    841907,"titi@free.fr",1,2,1,123456

    je fais la requête qui suit pour obtenir ça :

    1234,"pouet@free.fr",1,2,2,4521
    1158262,"toto@hotmail.com",4,2,2,95421
    841907,"titi@free.fr",1,2,1,123456

    mais ça ne marche pas...

    SELECT *
    FROM ((SELECT ......)
    UNION
    (SELECT )) V
    WHERE champ5 = MAX(champ5)
    GROUP BY champ1, champ2, champ3, champ4

    Je veux obtenir la ligne ayant le champ 5 le plus élevé par champ1...
    Avec cette requête SqlServer m'incendie sur le champ 6....

    Merci de votre aide.

    Iza

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Avec une auto-jointure (plus performant qu'une sous-requête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT A.champ1,A.champ2,A.champ3,A.champ4,A.champ5,A.champ6 
    FROM ta_table A,
    (SELECT champ1,champ2,champ3,champ4,max(champ5) max_champ5 
    FROM ta_table GROUP BY champ1,champ2,champ3,champ4) B
    WHERE A.champ1 = B.champ1
    AND A.champ2 = B.champ2
    AND A.champ3 = B.champ3
    AND A.champ4 = B.champ4
    AND A.champ5 = B.max_champ5
    ou bien alors niveau syntaxe il y a plus simple en utilisant les fonctions analytiques : http://lalystar.developpez.com/fonctionsAnalytiques/
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

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

Discussions similaires

  1. récupération et substitution en une seule ligne ?
    Par black bulldog dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2014, 17h52
  2. Comment n'afficher qu'une seule ligne par sous-groupe
    Par mondaying dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/01/2010, 23h25
  3. [Debutant] echo n'affiche qu'une seule ligne
    Par ben_harper dans le forum Linux
    Réponses: 6
    Dernier message: 04/10/2007, 17h40
  4. wxWidgets : couleur de texte sur une seule ligne
    Par Oatly dans le forum wxWidgets
    Réponses: 8
    Dernier message: 05/12/2004, 19h24
  5. [JTable]Selectionner une seule ligne d'une jTable ?
    Par Maximus32 dans le forum Composants
    Réponses: 2
    Dernier message: 22/10/2004, 02h06

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