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 :

Probleme de requete


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Par défaut Probleme de requete
    bonjour,

    je bloque sur une requete MSSQL:
    Je fait un select distinct sur plusieurs champs de plusieurs tables avec des left join dans le from et 23 conditions dans mon where.

    Le principal champs est celui de nom de machines et par conséquent je ne evux pas dans le resultat 2 entrees avec le mem nom de machine.
    Cependant cela se produit car dans un des champs requetés, je recupere la vitesse des processeurs et dans certains cas je remonte 2 vitesses differentes.
    Je me retrouve donc avec un resultat du style :
    PC1 cpu1 vitesse-1890 ......
    PC1 cpu1 vitesse-1891 ......

    j'ai essayé avec du max(processorSpeed) group by ... mais passe pas

    si vous pouvez m'aider ?

    merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut SQL SERVEUR 2005 ou 2000 ?
    sous SQL SERVEUR 2005, je ferais avec les fonctions de ranking.

    http://sqlserveur.blogspot.com/2007/...e-ranking.html

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Par défaut
    et avec une requete de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT pc, cpu, processorSpeed
    FROM ta_table1
    JOIN ...
    WHERE ...
    GROUP BY pc, cpu
    HAVING max(processorSpeed)

    Il te sortira parmi tous les couples [PCn, CPUn] celui qui a la plus grande valeur "processorSpeed"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Par défaut
    ej ne suis pas sous SQL 2005 donc la premiere solution ne fonctionne pas.
    Et pour la 2e ca ne passe pas non plus car le having max(...) genere une erreur. Il faut peut etre lui donner un argument du style having max(..)=' ' .
    Mais comme le chiffre est aleatoire...

    Si vous avez d'autres idees, je suis preneur.

    Merci

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 135
    Par défaut
    Voici une structure de requête pour sélectionner les lignes correspondant à la date la plus récente pour chaque id_groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  t1.* 
    FROM    matable AS t1 
    WHERE   EXISTS 
            (   SELECT  1 
                FROM    matable AS t2 
                WHERE   t1.id_groupe = t2.id_groupe 
                HAVING  t1.col_date = MAX(t2.col_date) 
            ) 
    ;
    Je te laisse l'adapter à ton cas...
    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.

Discussions similaires

  1. probleme de requete
    Par doudou1 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/04/2004, 13h42
  2. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45
  3. PROBLEME DE REQUETE IMBRIQUEE
    Par fleuve007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/12/2003, 15h33
  4. probleme de requete
    Par LineLe dans le forum ASP
    Réponses: 8
    Dernier message: 17/09/2003, 16h47
  5. Probleme de requete
    Par misterbillyboy dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/07/2003, 08h24

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