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

MS SQL Server Discussion :

[SQLSERVER 2K]somme dans une requete


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Par défaut [SQLSERVER 2K]somme dans une requete
    Bonjour,

    J'ai un problème dans une requête.
    Je fais des INSERT UPDATE avec le logiciel que m'a fourni une entreprise.

    Je dois effectuer une somme en fonction de certaine valeur.

    J'ai une clé quaternaire "CD_METIER, CD_DOM_PROF, CD_FAM_PROF et CHRN_COMPET".
    Pour que cette clé soit unique je dois créer la valeur du "CHRN_COMPET".

    Donc pour chaque triplé "CD_METIER, CD_DOM_PROF, CD_FAM_PROF" je veux incrémenter la valeur du "CHRN_COMPET". (de 1 à n pour chaque triplé différent)

    Voila ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SELECT
    CD_FAM_PROF,CD_DOM_PROF,CD_METIER,
     
    CAST
    (
    	(
    		(
    		SELECT COUNT(*) 
    		FROM ANAELRHDTA_GB..COMPET_METIER cm 
    		WHERE cm.CD_FAM_PROF = CD_FAM_PROF 
    		AND cm.CD_DOM_PROF = CD_DOM_PROF 
    		AND cm.CD_METIER = CD_METIER
    		)
    		+ 1
    	)
    	AS NUMERIC(3,0)
     
    ) AS CHRN_COMPET,
     
    FROM ANAELRHREC_GB..FICHE_METIER
    Quand il trouve 1 ligne dans la table "ANAELRHREC_GB..FICHE_METIER" il l'insere dans la table "ANAELRHDTA_GB..COMPET_METIER".

    Donc normalement, il va incrémenter les valeurs de mon "CHRN_COMPET", hors il insère toujours la même valeur.

    Quelqu'un peut il m aider ?

    cordialement

  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
    Une solution probable sur SQL Serveur 2005, les fonctions de fenetrage...

    http://blog.developpez.com/ylarvor?cat=1603

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 992
    Billets dans le blog
    6
    Par défaut
    Donc normalement, il va incrémenter les valeurs de mon "CHRN_COMPET", hors il insère toujours la même valeur.
    C'est parfaitement normal. Par nature SQL est ensembliste. Or vous pensez naïvement qu'il traite ligne à ligne de manière itérative... Ce qui est faux !

    Ainsi votre requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) 
    FROM   ANAELRHDTA_GB..COMPET_METIER cm 
    WHERE  cm.CD_FAM_PROF = CD_FAM_PROF 
      AND  cm.CD_DOM_PROF = CD_DOM_PROF 
      AND  cm.CD_METIER = CD_METIER
    N'est exécutée qu'une seule fois, quelque soit le nombre de ligne de votre table ANAELRHREC_GB..FICHE_METIER.

    Ce n'est pas ainsi que l'on gère des incréments pour des clefs. J'ai écrit maints article sur le sujet...
    Commencez par celui-ci :
    http://sqlpro.developpez.com/cours/clefs/
    Continuez par ce blog : http://blog.developpez.com/sqlpro?ti...vec_sql_server

    Pour que l'on puisse vous aider plus en avant, conformez vous à la carte de postage, notamment en nous fournissant sous forme SQL le DDL de vos tables en jeu ainsi qu'un jeu d'essais et la réponse attendue.


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Somme dans une requete
    Par tizla dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 29/05/2007, 16h14
  2. Somme dans une requete SQL
    Par LP-mpascolo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/04/2007, 10h26
  3. Somme dans une requete avec regroupement
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/07/2006, 21h20
  4. Sommes dans une requete d'un formulaire
    Par moto25 dans le forum Access
    Réponses: 7
    Dernier message: 14/11/2005, 18h46
  5. Somme dans une requete
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2004, 10h40

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