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 :

[SQL Server] Update à partir d'une liste


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Par défaut [SQL Server] Update à partir d'une liste
    Hello,

    je fais une liste de valeurs avec cette requète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT     Valeur, MAX(DateHeure) AS DateHeure,  Temporaire
    FROM         Ta_Cours
    WHERE     (CONVERT(datetime, CONVERT(CHAR(10), DateHeure, 103)) <> CONVERT(datetime, CONVERT(CHAR(10), GETDATE(), 103)))
    GROUP BY Valeur, CONVERT(datetime, CONVERT(CHAR(10), DateHeure, 103)), Temporaire
    Je veux donner au champs "Temporaire" la valeur false pour tous les enregistrements extraits par cette requète...

    et je n'y arrive pas !

    Si quelqu'un peut m'aider ... merci

  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
    21 994
    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 994
    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 Ta_Cours
    SET    Temporaire = 'False'
    FROM   Ta_Cours
    WHERE  FLOOR(CAST(DateHeure AS FLOAT)) <>
           FLOOR(CAST(CURRENT_TIMESTAMP AS FLOAT)) 
    GROUP  BY Valeur, FLOOR(CAST(DateHeure AS FLOAT)), Temporaire
    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
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Par défaut
    Le problème c'est le regroupement MAX(DateHeure) AS DateHeure avec le GROUP BY

    Je ne sais pas comment faire

  4. #4
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Par défaut
    Citation Envoyé par SQLpro
    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE Ta_Cours
    SET    Temporaire = 'False'
    FROM   Ta_Cours
    WHERE  FLOOR(CAST(DateHeure AS FLOAT)) <>
           FLOOR(CAST(CURRENT_TIMESTAMP AS FLOAT)) 
    GROUP  BY Valeur, FLOOR(CAST(DateHeure AS FLOAT)), Temporaire
    A +
    ne fonctionne pas sous SQL server 2005

    Syntaxe incorrecte vers le mot clé 'GROUP'.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2005
    Messages : 38
    Par défaut Du coup, quelle a été la solution ?
    Bonjour, j'ai un besoin équivalent : je crée des tables de synthèse, en batch nocturne sur SQL-Server. C'est du style "Stocker dans RecSynth différentes stat sur les Réceptions". J'ai essayé un paquet de syntaxes, mais toutes incompréhensibles par SQL-Server :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE RecSynth RS 
    FROM Receptions RC 
    SET TotMnt=sum(Montant) 
    WHERE RS.Fourn=RC.Fourn and RC.annee = RS.annee AND RC.TypeRec is null
    ou complètement différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE RecSynth RS 
    INNER JOIN Receptions RC 
    ON RS.Fourn=RC.Fourn and RC.annee = RS.annee 
    SET TotMnt=sum(Montant) 
    WHERE RC.TypeRec is null
    Plus quelques dizaines du même tonneau ...
    Le premier exemple me fait retourner 15 ans en arrière, c'était une syntaxe habituelle avec INGRES, et on pouvait comme ça en imbriquer des paquets.
    Le deuxième exemple je le trouve sur ce forum.
    Alors du coup, c'est quoi la vraie, qui marche sous SQL-Server ?

Discussions similaires

  1. [MySQL] Update a partir d'une valeur d'une liste deroulante
    Par alone06 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/11/2013, 00h43
  2. PL SQL update a partir d une requete
    Par shmoolki dans le forum SQL
    Réponses: 5
    Dernier message: 15/10/2013, 11h54
  3. Réponses: 4
    Dernier message: 03/03/2008, 14h34
  4. [SQL] Saisir une table à partir d'une liste
    Par cunimb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/02/2007, 02h55
  5. [SQL] Obtenir un tableau à partir d'une liste
    Par JMO91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 00h07

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