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 :

Update de la dernière ligne


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut Update de la dernière ligne
    Bonjour,

    je fais un update dans une table, je voudrais par date et faire l'update que de la dernière ligne mise à jour ..

    voilà ma requete actuelle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE  UA 
    SET    UA.STATUS_ID = 75, UA.UPDATE_DATE = @date,UA.UPDATED_BY = @sys
     
    FROM TABLE  UA 
    JOIN #TEMP1 t  ON t.USER_ID = UA.USER_ID
    WHERE  UA.STATUS_ID = 87

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Tu pourrais nous donner un exemple de ce que tu veux faire ? ... avec un jeu de données.

    ++

  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
    Par défaut
    Bonjour,


    Il est vrai que la demande n'est pas très claire

    Les structures des tables en jeu seraient utiles aussi


    que donne ceci :
    Code SQL : 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
     
    UPDATE  UA 
    SET    
    	UA.STATUS_ID = 75, 
    	UA.UPDATE_DATE = @date,
    	UA.UPDATED_BY = @sys
    FROM LaTABLE  UA 
    INNER JOIN (
    	SELECT 
    		[USER_ID] AS UI,
    		MAX(UPDATE_DATE) AS MaxDte
    	FROM LaTable
    	GROUP BY [USER_ID]
    )UMax
    	ON UA.USER_ID = UMax.UI
    	AND UA.UPDATE_DATE = UMax.MaxDte
    INNER JOIN #TEMP1 t  ON t.USER_ID = UA.USER_ID
    WHERE  UA.STATUS_ID = 87

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    au fait voilà la structure de la table :

    MA_TABLE

    USER_ID
    STATUS_ID
    CHAMP1
    CHAMP2
    CHAMP3
    UPDATE_DATE
    CREATION_DATE
    CREATED_BY



    la table #TEMP1 me permet de filtrer les lignes à mettre à jour, mais, il se peut que les lignes soient dupliquées en base mais avec des dates (update/creation) différente (faux doublons)

    je voudrais ne pas faire la mise à jour et avoir des doublons, c'est pour celà que je me suis dit s'il est possible de faire l'update que de la dernière ligne mise à jour qui correspond au critère de la jointure mon problème serait résolu.

    Merci ..

    quelque chose comme

    update top 1 from MA_TABLE .. order by update_date .

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    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
     
    UPDATE  UA 
    SET    UA.STATUS_ID = 75, UA.UPDATE_DATE = @date,UA.UPDATED_BY = @sys
     
    FROM (
    SELECT
    UA2.*
    , ROW_NUMBER() OVER (PARTITION BY UA2.USER_ID, ORDER BY UA2.CREATION_DATE DESC) AS ROW
    FROM UA AS UA2 
    WHERE  UA2.STATUS_ID = 87
    ) AS UA2
    INNER JOIN #TEMP1 t  ON t.USER_ID = UA2.USER_ID
    WHERE UA2.ROW = 1
    AND UA.STATUS = UA2.STATUS -- ou 87
    AND UA.USER_ID = UA2.USER_ID
    AND UA.CREATION_DATE = UA2.CREATION_DATE

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Merci à tous,

    j'ai fais autrement,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    UPDATE  UA
     
    FROM U_A UA JOIN
     
    (
     
    SELECT TOP 1 * from  U_A
    JOIN ..
    WHERE ...
    ) UA1  on UA.USER_ID = UA1.USER_ID

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

Discussions similaires

  1. [JScrollPane] [JTable] Se placer à la dernière ligne
    Par wishnight dans le forum Composants
    Réponses: 9
    Dernier message: 24/12/2015, 18h42
  2. [JList] rendre visible la dernière ligne ajoutée
    Par Mille sabords dans le forum Composants
    Réponses: 3
    Dernier message: 12/04/2005, 10h32
  3. Réponses: 14
    Dernier message: 30/03/2005, 21h50
  4. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57
  5. l'identifiant unique de la dernière ligne insérée
    Par dim_italia dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2004, 17h55

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