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 :

Association de deux champs issus d'un select imbriqué


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut Association de deux champs issus d'un select imbriqué
    Bonjour à tous,

    Je dois réaliser une requête de mise à jour de certaines colonnes dans une table.

    La nouvelle valeur est un MAX.

    J'ai une requête qui me récupère un identifiant et mon max associé à cet identifiant.

    Je veux faire la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE maTable
    SET MACOLONNE = MAXVALUE
    WHERE
    ID IN (SELECT T.ID as idTemp, MAX(T.date3) as MAXVALUE FROM maTable T WHERE...)
    AND maTable.ID = idTemp
    Dis autrement, je veux appliquer pour chaque id de la requête imbriquée la valeur associée (maxvalue) sur mes autres colonnes.

    Encore dit autrement:

    Pour chaque ligne, je veux que mes colonnes prennent le max d'une autre colonne selon une autre condition.

    Merci d'avance pour ceux qui ont pris le temps de comprendre ma demande et qui ont peut être déjà une solution.

    Mon problème actuel est qu'il ne connait pas mon MAXVALUE ou idTemp donc je ne peux pas faire l'association que je voulais.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE maTable
    SET MACOLONNE = MAXVALUE
    FROM   maTable T1
           INNER JOIN (SELECT T2.ID, MAX(T2.date3) AS MAXVALUE 
                       FROM maTable T2 WHERE...)
                 ON T1.ID = T2.ID
    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/ * * * * *

  3. #3
    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 : 44
    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
    Par défaut
    Bonjour,

    Ou encore, si vous êtes sous SQL Server 2005 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH
    	CTE_MAX AS
    	(
    		SELECT T.ID AS idTemp,
    				MAX(T.date3) MAXValue
    		FROM maTable T
    		WHERE ---
    	)
    UPDATE maTable
    SET maColonne = CTE_MAX.MAXValue
    FROM maTable T
    JOIN CTE_MAX C ON CTE_MAX.ID = T.ID
    @++

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Merci pour vos réponses, je me suis bien rouillé en SQL, les INNER JOIN je n'y avais pas pensé!

    Je suis sur MSSQL 2000...

    Je vais tester ca de suite, merci pour votre célérité.

    C'est parfait, merci, problème résolu

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

Discussions similaires

  1. résultat de requête avec deux champs issus du même champ initial
    Par Macrounet dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/08/2010, 17h38
  2. Select sur deux champ avec prèsence d'au moins 1
    Par 000Alucard000 dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/11/2008, 11h13
  3. Modification de champs issus d'un select multi table
    Par plancade dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/06/2007, 16h25
  4. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  5. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30

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