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

Développement SQL Server Discussion :

300 000 lignes au lieu d'une trentaine.. !


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut 300 000 lignes au lieu d'une trentaine.. !
    Bonjour à tous,

    je me tourne vers vous car je pense avoir épuisé toutes les idées que j'avais eues !
    J'ai une requête qui me remonte des résultats de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    clé1  valeur1   statut1
    clé2  valeur1   statut2
    clé3  valeur1   statut3
    clé4  valeur1   statut4
    clé5  valeur2   statut1
    clé6  valeur2   statut2
    clé7  valeur2   statut3
    clé8  valeur3   statut1
    ...
    Le truc, c'est que les valeurs dont le statut max est statut4 ne m'intéressent pas... En gros, là je voudrais juste me voir retourner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    clé7   valeur2   statut3
    clé8   valeur3   statut1
    Si l'un d'entre vous a une idée, alors il me sauve !

    Merci d'avance pour votre aide,

    Olivier

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 801
    Points
    3 801
    Par défaut
    Bonjour,

    Peux tu nous mettre ta requête SVP.
    Ainsi on pourra t'aider
    Sinon tu ajoute une condition qui dit 3ème colonne <> 'statut4'
    Mais avec ta requête ça sera plus simple.

  3. #3
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    que represente statu dans ta base (nombre, varchar, ...)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    merci pour vos réponses.
    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MAX(PK_Sequence) AS PK_Sequence, MessageId, Stage*10+MessageStatus
    FROM TNotify_Messages_Analysis
    WHERE [TimeStamp] > CAST(CONVERT(VARCHAR(10), GETDATE(), 121) + ' 00:00:00' AS DATETIME)	
    GROUP BY GOp,Folder,Portfolio,Book,FrontReference,MessageId, Stage*10+MessageStatus
    où PK_Sequence est ma clé, MessageId mon identifiant, et Stage*10+MessageStatus mon statut (dont les valeurs peuvent aller de 10 à 33). La condition sur le TimeStamp me permet de ne remonter que les lignes de la journée en cours... sans quoi je peux remonter plusieurs dizaines de millions de lignes :-).

    Je vous remercie d'avance pour vos suggestions.

    Olivier

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    J'ai oublié de répondre au message plus haut : je ne peux pas ajouter de condition colonne3<>statut4... parce que si la valeurX a un statut4, alors je ne veux pas du tout voir la valeurX...
    j'espère me faire comprendre

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous avez mois la clause HAVING :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DECLARE @dateLimite DATETIME
    SELECT @dateLimite = CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME)
     
    SELECT MessageId,
    		MAX(Stage * 10 + MessageStatus)
    FROM dbo.TNotify_Messages_Analysis
    WHERE [TimeStamp] > @dateLimite
    GROUP BY GOp,
    			Folder,
    			Portfolio,
    			Book,
    			FrontReference,
    			MessageId
    HAVING MAX(Stage * 10 + MessageStatus) <> 'statut4'
    Sortez la fonction GETDATE() de la clause WHERE, sans cela celle-ci est recalculée pour chaque ligne de votre ensemble résultat, donc celui-ci est faux

    @++

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Génial :-)

    En adaptant ta proposition, j'obtiens bien ce que je veux

    Encore merci, ça m'enlève une bonne épine du pied.

    Bonne soirée à tous

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Avec plaisir et @++

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/04/2011, 03h22
  2. Afficher 560 000 lignes dans une JTable -> out of memory
    Par Mattorre dans le forum Composants
    Réponses: 5
    Dernier message: 11/06/2010, 11h07
  3. Réponses: 3
    Dernier message: 11/03/2010, 09h05
  4. [XL-2007] Filtrer : Afficher 4 lignes au lieu d'une ?
    Par byloute dans le forum Excel
    Réponses: 2
    Dernier message: 20/02/2010, 12h27
  5. Réponses: 3
    Dernier message: 05/06/2007, 15h09

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