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 :

utilisation d'un select dans un update ou insert.


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut utilisation d'un select dans un update ou insert.
    Bonjour.
    Je souhaiterais insérer le résultat de cette requête dans une colonne existante contenant des NULL d'une table existante .
    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUBSTRING(LaColonne, CHARINDEX('la valeur maximale est'  , LaColonne)+ 23, 6) AS Resultat
    FROM LaTable
    Merci bcp

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Bonsoir,

    Déclarez d'abord une variable @resultat,qui contiendra votre résultat. Donc, soit une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @resultat nvarchar(100)
     
    set @resultat = (SELECT SUBSTRING(LaColonne, CHARINDEX('la valeur maximale est' , LaColonne)+ 23, 6) AS Resultat FROM LaTable)
    Et supposant que votre table contient une clé primaire CléPrimaireTableExistante ,( je ne comprends pas trop l'utilité de +23).

    Vous aurez comme requête de mise à jour ( insertion de la nouvelle valeur) pour chaque ligne de la table existante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TableExistante set ColonneTableExistante = @resultat Where CléPrimaireTableExistante = ID_ColonneCléPrimaireTableExistante .
    Merci.

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par Rafter Voir le message
    Je souhaiterai inserer le resultat de cette requete dans une colonne existante contenant des NULL d'une table existante .
    Voici la requete :

    SELECT SUBSTRING(LaColonne, CHARINDEX('la valeur maximale est' , LaColonne)+ 23, 6) AS Resultat
    FROM LaTable
    Votre demande est AMHA insuffisamment précise.
    S'agit-il de 2 colonnes de la même table ?
    Le résultat du SELECT s'applique à toutes les colonnes de valeur indéfinie (~NULL) ou se recherche pour chaque ligne ?
    Une description du modèle de données, du moins la(es) table(s) et les colonnes impliquées dans le traitement et un jeu d'essai minimal permettrait de lever ces ambigüités...

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut
    Bonjour,

    Ci-dessous, ma première requête qui fonctionne correctement ( grâce à ce site ) et qui me renvoi des milliers d'enregistrement type date (exple : 2014-05-30 ) se trouvant juste après la chaine de caractère suivante "la valeur maximale est" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUBSTRING([Colonne1], CHARINDEX('la valeur maximale est '  , [Colonne1])+ 23, 10) AS Resultat FROM [TAB1] C , [TAB2] F
          where C.[ID1]= F.[ID1]
          and C.[Colonne1] like '%la valeur maximale est%';
    PI : 23 : represente la longeur de la chaine de caractère : "la valeur maximale est"
    10 : represente : le nombre de caractère à extraire juste après la chaine "la valeur maximale est"

    Mon besoin actuel est de pouvoir insérer le résultat de cette requête ( une colonne Resultat contenant des milliers d'enregistrement de type date ) dans la colonne COL3 de table TAB2 ( qui a été utilisé dans la première requête lors de la jointure ).

    j'espere que j'étais plus claire et merci

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

    Essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE F
        SET COL3 = SUBSTRING([Colonne1], CHARINDEX('la valeur maximale est '  , [Colonne1])+ 23, 10)
    FROM [TAB1] C 
    INNER JOIN  [TAB2] F
        ON C.[ID1]= F.[ID1]
    WHERE  C.[Colonne1] LIKE '%la valeur maximale est%';

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut
    j'ai obtenus l'erreur suivante:

    Msg*242, Niveau*16, État*3, Ligne*1
    La conversion d'un type de données varchar en type de données datetime a créé une valeur hors limites.

    la colonne ( COL3 ) que je veux mettre à jours est de type datetime.

    et la colonne (colonne 1) utilisé dans le substring charindex est de type varchar (max ).

    il y a donc un problème de conversion de données.

    merci de votre aide

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut
    c bon pour moi,

    j'ai trouvé la solution.

    j'ai mis : SET DATEFORMAT ymd

    ensuite jai executé votre requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE F
        SET COL3 = SUBSTRING([Colonne1], CHARINDEX('la valeur maximale est '  , [Colonne1])+ 23, 10)
    FROM [TAB1] C 
    INNER JOIN  [TAB2] F
        ON C.[ID1]= F.[ID1]
    WHERE  C.[Colonne1] LIKE '%la valeur maximale est%';
    et c roule super bien.

    merci à vous et à votre super forum .

    la bonne journée.

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

Discussions similaires

  1. [2005] Utiliser La close select dans une Insert
    Par abd75web dans le forum Développement
    Réponses: 4
    Dernier message: 23/09/2013, 12h20
  2. [MySQL] Select dans un Update
    Par Nympheasi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/07/2009, 00h55
  3. [MySQL] un select dans un update
    Par Yoshio dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/09/2006, 19h07
  4. Pl/SQL utilisation d'une variable dans un select
    Par larg dans le forum PL/SQL
    Réponses: 17
    Dernier message: 30/11/2004, 17h08

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