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 :

Valeur dans sous-requête SQL


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Points : 269
    Points
    269
    Par défaut Valeur dans sous-requête SQL
    Bonjour à tous,

    Je cherche à faire un calcul de ratio a partir des valeur du premier moi de l'année. Quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     COST_CENTER AS CC, Month, CPU_COUNT /
                              (SELECT     CPU_COUNT
                                FROM          dbo.vm_monthly_report
                                WHERE      (COST_CENTER = CC) AND (Month = 'January')) AS Expr1, DISK_SIZE, MEM_SIZE
    FROM         dbo.vm_monthly_report AS vm_monthly_report_1
    Malheureusement, dans ma sous requête, il me dit que CC n'existe pas.

    Y a-t-il un moyen de faire cela?

    Cordialement.

    DeWaRs

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    Car les alias sont créés en dernier lors de l'execution de la requete.

    Du coup, la sous requete ne connait pas, à ce stade, l'alias CC.


    Ceci étant dit, il serai surement préférable de consolider en amont les données du 1er mois de l'année si vous n'avez aucune clause de restriction dans la requête principale. (bonjour les perfs avec du volume sinon.)

  3. #3
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    Au moment ou la sous requête est traitée, votre alias n'existe pas encore...
    Il vous faut donner des alias à vos tables, afin de les différencier dans votre sous requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT     COST_CENTER AS CC, Month, CPU_COUNT /
                              (SELECT     CPU_COUNT
                                FROM          dbo.vm_monthly_report  vm_monthly_report_2
                                WHERE      ( vm_monthly_report_2.COST_CENTER =  vm_monthly_report_1.COST_CENTER) AND (Month = 'January')) AS Expr1, DISK_SIZE, MEM_SIZE
    FROM         dbo.vm_monthly_report AS vm_monthly_report_1
    Cela dit, je ne comprends pas bien le principe de votre requête...

  4. #4
    Membre actif Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Merci de vos réponse. Je suis en train de générer des graphiques en fonction de données dans une base SQL. Jusque la rien de bien compliquer.
    Le probleme est que je veux afficher sur un meme graphique des données qui ont des echelles totalement différentes (de 0 a 10 pour certaine valeur, de 0 à 10000) pour d'autre.

    Voulant afficher sur mon graphique les variation de ses valeurs, j'ai penser à creer une view avec des données de rapport 1 avec comme base le mois de janvier.

    Imaginons que j'ai les valeurs suivantes :

    Jan 12513
    Feb 13447
    Mar 11648

    Mon résultat final sera :

    Jan 1,00
    Feb 1,07
    Mar 0,93

    Je voudrais faire ce calcule coté SQL et non coté programme.

    Est-ce plus clair ?

    DeWaRs.

  5. #5
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    oui, c'est plus clair...

    vous pouvez aussi essayer ceci comme requête, surtout si vous voulez procéder de la même façon pour disk_size et mem_size ensuite... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT     
        b.COST_CENTER AS CC, 
        b.Month, 
        b.CPU_COUNT / Ref.CPU_COUNT as cpuCount
        b.DISK_SIZE, 
        b.MEM_SIZE
    FROM         dbo.vm_monthly_report AS b
    INNER JOIN dbo.vm_monthly_report ref
                ON  b.COST_CENTER =  ref.COST_CENTER
                AND ref.Month = 'January'

  6. #6
    Membre actif Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Points : 269
    Points
    269
    Par défaut
    Merci de ta réponse
    C'est ca.
    Néanmoins, le temps d'execution est trop long, je suis partie sur une autre solution

    Cordialement.

    DeWaRs

  7. #7
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par DeWaRs Voir le message
    je suis partie sur une autre solution
    Il serait intéressant de nous en faire part...

    Si prendre le mois de janvier n'est qu'arbitraire, vous pourriez prendre le mois ayant la valeur la plus élevée, ainsi vous n'auriez que des nombres entre 0 et 1, et une requête peut être plus rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT     
        b.COST_CENTER AS CC, 
        b.Month, 
        b.CPU_COUNT / MAX(CPU_COUNT) OVER(PARTITION BY  AS b.COST_CENTER ) cpuCount
        b.DISK_SIZE, 
        b.MEM_SIZE
    FROM         dbo.vm_monthly_report AS b

  8. #8
    Membre actif Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Points : 269
    Points
    269
    Par défaut
    Hello,

    Je pensais traiter les valeurs via le code, mais votre réponse relance tout

    Merci de votre retour, je vais me pencher sur cette option.

    Cordialement.

    DeWaRs

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

Discussions similaires

  1. Valeur non trouvé dans une requète SQL
    Par Jeankiki dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/12/2006, 16h36
  2. limitation de caractére dans une requête SQL sous Acces
    Par amka dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/08/2006, 15h15
  3. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29
  4. Valeur des formulaire réutilisées dans des requètes SQL.
    Par cotmar dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/05/2006, 10h16
  5. Utilise la valeur d'une textbox dans une requête sql
    Par podidoo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/03/2006, 09h53

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