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

DB2 Discussion :

Doubler les données via spufi


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut Doubler les données via spufi
    Salut a tous,

    J'ai une table DB2 avec des données spécifiques a la France (avec une donnée Pays = 'F').
    Il me faudrait recuperer ces données et copier, mais avec la donnée 'E' a la place.

    j'ai fait un truc comme ca
    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
    INSERT INTO table
     (KEY
     , USESYS                                                            
     , DATSYS                                                            
     , TIMSYS                                                            
     , PAYS                                                         
     , TEXTE) 
     SELECT                                                              
         ( SELECT (MAX (KEY)+1) FROM table )                   
        , 'FREED'                                                          
        , CURRENT DATE                                                      
        , CURRENT TIME                                                                                                         
        , 'E'                                                               
        , TEXTE                                                         
             FROM table                                           
             WHERE PAYS= 'F'                                           
     ;
    et bon vous devez vous en douter mais le select MAX ne marche pas.

    avez vous une idée comment faire pour doubler la table, tout en generant une nouvelle clef.

    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Par défaut
    Salut,

    Le SELECT MAX n'étant réalisé qu'une fois et non pour chaque ligne à insérer, tu ne peux pas faire SELECT MAX + 1, sinon tu auras un doublon dès la 2ème insertion. Si ça ne te gène pas que les clés ne se suivent pas juste après le max, tu peux écrire :

    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
    INSERT INTO TABLE
    (KEY
    , USESYS                                                            
    , DATSYS                                                            
    , TIMSYS                                                            
    , PAYS                                                         
    , TEXTE) 
    SELECT                                                              
         KEY + ( SELECT (MAX (KEY) FROM TABLE )                   
        , 'FREED'                                                          
        , CURRENT DATE                                                      
        , CURRENT TIME                                                                                                         
        , 'E'                                                               
        , TEXTE                                                         
             FROM TABLE                                           
             WHERE PAYS= 'F'                                           
    ;
    Bonne utilisation.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 11
    Par défaut
    salut,

    tu peux récupérer la valeur du max de ta clé ( prends un peu de marge si la table subit souvent des insertions) donc max_valeur = MAX(key) + marge et tu exécute la requête suivante en remplaçant max_valeur par la valeur en dur et 'ce_que_tu_veux' par la colonne utilisée pour le tri de la clé:

    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
    INSERT INTO TABLE
     (KEY
     , USESYS                                                            
     , DATSYS                                                            
     , TIMSYS                                                            
     , PAYS                                                         
     , TEXTE) 
     SELECT                                                              
         ROWNUMBER() OVER(ORDER BY ce_que_tu_veux)+ max_valeur
        , 'FREED'                                                          
        , CURRENT DATE                                                      
        , CURRENT TIME                                                                                                         
        , 'E'                                                               
        , TEXTE                                                         
             FROM TABLE                                           
             WHERE PAYS= 'F'                                           
     ;

Discussions similaires

  1. Manipuler les donnés via mes composants
    Par charrynsasi dans le forum JDBC
    Réponses: 3
    Dernier message: 09/06/2010, 15h27
  2. envoi et recevoir les données via Modem
    Par ouadie99 dans le forum C#
    Réponses: 7
    Dernier message: 29/05/2010, 19h27
  3. recuperer les données via une servlet
    Par mystro7200 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 08/01/2009, 17h56
  4. Réponses: 15
    Dernier message: 20/06/2006, 10h29
  5. Accès aux bases de données via les objets de Borland (Bdpxx)
    Par agodinasandrien dans le forum Delphi .NET
    Réponses: 9
    Dernier message: 26/09/2005, 14h00

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