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 :

Problème sous-requête complexe


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut Problème sous-requête complexe
    Bonjour, j'ai besoin d'aide pour un problème auquel je n'arrive pas à trouver de solutions.

    Voici ma requête SQL : (j'ai simplifié)

    Select Id, (Ma sous requète) from Table Where (Ma sous requète)<0


    Le problème : Ma sous-requêtes contient des calculs complexes et est calculés pour un très grand nombre de lignes ( plus d'1 millions). C'est déjà très long, et en plus là elle est calculé deux fois.

    Ce que je cherche donc à faire :

    Select Id, (Ma sous requète) AS résultat from Table Where résultat<0

    ou alors :

    Select Id, (Ma sous requète) from Table Where colonne2<0

    Je suppose que vous avez compris le principe.

    Merci

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Peut-être regarder du côté de la clause HAVING (à condition d'utiliser une clause GROUP BY).

    Mais sans plus de détails, difficile d'en dire plus (en tout cas pour moi).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Merci de votre réponse. En effet la clause Having n'est pas la solution.
    Désolé du manque de détail, je ne met pas ma requête sur le forum car elle fait 400 lignes. J'ai au contraire préféré simplifié au maximum ma question pour pas que les gens se perdent dans la compréhensions de la requête.

    En gros :
    J'aimerais savoir s'il est possible d'afficher le résultat d'une sous-requête dans mon select alors que cette sous requête a déjà été calculé dans la clause where sans la recalculé.

    Ou alors :

    J'aimerais savoir s'il est possible d'utiliser le résultat d'une sous-requête calculée en tant que colonne dans la clause where sans recalculé la sous-requête.

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Et du côté des CTE's, ça donne quoi ?

    Encore une fois, je pense que cela dépend vraiment de ce que vous faites :-/

    Suivant les besoins/contraintes, une solution valide dans un cas peut ne pas convenir dans un autre.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Je n'avais pas pensé au CTEs, c'est une excellente idée. Je vais faire des tests

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    a priori une CTE ne changera pas grand chose. ça permet de factoriser le code mais, comme pour une vue, le moteur remplace la cte par sa définition au moment de l'analyse de la requête. ça resterait cependant un bonne chose pour la lisibilité et la maintenance de la requête.

    Par contre, votre filtre n'est du coup surement pas sargable, et vos lenteurs viennent plutôt de là.

    Même si elle est longue, postez votre requête(merci de l'indenter correctement), on pourra mieux vous aider

Discussions similaires

  1. Problème sous requête
    Par darkloy dans le forum Requêtes
    Réponses: 5
    Dernier message: 29/01/2012, 21h35
  2. Utilisation du pivot : problème de requête "complexe"
    Par Kropernic dans le forum Développement
    Réponses: 12
    Dernier message: 27/01/2011, 11h44
  3. Problème sous-requête MAX et COUNT
    Par grafistolage dans le forum Requêtes
    Réponses: 6
    Dernier message: 06/07/2010, 09h08
  4. Problème Sous-Requête
    Par STEF_1 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/01/2006, 13h12
  5. problème sous-requête SQL et order by
    Par aguest dans le forum Requêtes
    Réponses: 10
    Dernier message: 26/12/2005, 23h57

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