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 :

[Access2003] Problème avec UPDATE


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de PhRey
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 197
    Points : 67
    Points
    67
    Par défaut [Access2003] Problème avec UPDATE
    Bonjour,
    je desire mettre a jour un ChampsA d'une TableA, avec les données importées d'un ChampsA d'une TableB,
    Le pb est que mon ChampsA de ma TableA n'est pas vide ! Et je dois conserver les données existantes !

    L'UPDATE importe les données mais vide dabord le ChampsA de ma TableA...

    Savez vous comment operer cette "mise à jour" de champs, svp ?
    Merci par avance !

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Hum... votre message est confus :
    - on ne parle pas de "champs" mais de colonnes
    - quel est votre SGBD et sa version ?
    - donnez-nous un jeu d'essais minimal, votre requête UPDATE, le résultat obtenu et celui attendu
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    je n'ai peut etre pas compris mais si tu veux conserver tes anciennes données ce n'est pas un UPDATE mais un INSERT qu'il te faudrait non?

    comme le dit Magnus, plus de précisions seraient les bienvenues

  4. #4
    Membre du Club Avatar de PhRey
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 197
    Points : 67
    Points
    67
    Par défaut
    Oui pardon.
    Je travaille sur une base client Access2003 sous XP.
    J'ai 2 tables clients, une ancienne (Contacts2) et une nouvelle (Contacts).
    Je veux donc actualiser la table client recente avec les données de l'ancienne table.

    Si je fais un UPDATE, je remplace les données recentes par les anciennes.
    Si je fais un INSERT je rajoute des enregistrements à ma nouvelle table, mais les données ne se fusionnent pas !

    Voici ma requète actuelle pour mettre à jour ma colonne "Dates" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE contacts INNER JOIN contacts2 ON contacts.[commune 01]=contacts2.[commune 01] SET contacts.dates = contacts2.dates;

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    peux tu mettre un petit exemple de ce que tu veux?(ancienne table, nouvelle table, resultat attendu avec quelques enregistrements.) merci

  6. #6
    Membre du Club Avatar de PhRey
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 197
    Points : 67
    Points
    67
    Par défaut
    Ancienne table (Contacts2)
    Commune 01 = Paris
    Commentaire = Avons passé de bonnes vacances.
    Nouvelle table (Contacts)
    Commune 01 = Paris
    Commentaire = Tout va bien il fait beau.
    Au final je desire donc fusionner les infos Commentaire du client "Paris" dans la table "Contacts" ce qui donnerait dans l'ideal :

    Pour la table Contacts :
    Commune 01 = Paris
    Commentaire = Tout va bien il fait beau.Avons passé de bonnes vacances.

  7. #7
    Membre du Club Avatar de PhRey
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 197
    Points : 67
    Points
    67
    Par défaut
    Personne ne peut m'aider à resoudre mon petit problème svp ?
    (Si je ne suis pas clair ou s'il manque encore des infos n'hesitez pas a me le demander)

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Un conseil : allez lire (et relire) les tutoriels de base en SQL, ça vous fera gagner du temps car vous n'aurez plus besoin d'aide pour des requêtes aussi simples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE CONTACT(COMMUNE VARCHAR2(25), COMMENTAIRE VARCHAR2(250));
    CREATE TABLE CONTACT_OLD(COMMUNE VARCHAR2(25), COMMENTAIRE VARCHAR2(250));
     
    INSERT INTO CONTACT_OLD VALUES ('Paris', 'Avons passé de bonnes vacances.');
    INSERT INTO CONTACT VALUES ('Paris', 'Tout va bien il fait beau.');
     
    UPDATE CONTACT C
    SET C.COMMENTAIRE = ( SELECT C_OLD.COMMENTAIRE || C.COMMENTAIRE
                          FROM   CONTACT_OLD C_OLD
                          WHERE  C.COMMUNE = C_OLD.COMMUNE );
    10g CYRIL> CREATE TABLE CONTACT(COMMUNE VARCHAR2(25), COMMENTAIRE VARCHAR2(250));

    Table créée.

    10g CYRIL> CREATE TABLE CONTACT_OLD(COMMUNE VARCHAR2(25), COMMENTAIRE VARCHAR2(250));

    Table créée.

    10g CYRIL>
    10g CYRIL> INSERT INTO CONTACT_OLD VALUES ('Paris', 'Avons passé de bonnes vacances.');

    1 ligne créée.

    10g CYRIL> INSERT INTO CONTACT VALUES ('Paris', 'Tout va bien il fait beau.');

    1 ligne créée.

    10g CYRIL> UPDATE CONTACT C
    2 SET C.COMMENTAIRE = ( SELECT C_OLD.COMMENTAIRE || C.COMMENTAIRE
    3 FROM CONTACT_OLD C_OLD
    4 WHERE C.COMMUNE = C_OLD.COMMUNE );

    1 ligne mise à jour.

    10g CYRIL> select *
    2 from contact;

    COMMUNE COMMENTAIRE
    ------------------------- ------------------------------------------------------------------------------------
    Paris Avons passé de bonnes vacances.Tout va bien il fait beau.

    1 ligne sélectionnée.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  9. #9
    Membre du Club Avatar de PhRey
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 197
    Points : 67
    Points
    67
    Par défaut
    Sans doute, mais j'ai beau chercher partout, j'ai beau aussi essayer votre solution, je n'arrive a rien....

    Votre solution n'est peut etre pas compatible avec Access ? (par quoi remplacer les || a ce propos svp ? une virgule ?)

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut +
    par quoi remplacer les || a ce propos svp ? une virgule ?
    Probablement par le symbole " + ", mais je n'en suis pas sùr.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE CONTACT C
    SET C.COMMENTAIRE = ( SELECT C_OLD.COMMENTAIRE + C.COMMENTAIRE
                          FROM   CONTACT_OLD C_OLD
                          WHERE  C.COMMUNE = C_OLD.COMMUNE );

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Sous Access, l'opérateur de concaténation n'est ni || ni +, mais &.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    J'ai depuis mon dernier post testé avec " + " sous Access 2000 et ça a marché.

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Access ne suporte pas les sous requêtes dans le SET d'UPDATE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE
    (
    SELECT T.Commentaire AS C, T2.Commentaire AS C2
    FROM Contact T INNER JOIN ContactOld T2 ON 
    T.Ville = T2.Ville
    )
     
    SET C=C & "." & C2
    Le soucis c'est :

    Que veux tu faire pour les contacts n'existant pas dans Contact mais présents dans ContactOld ? Pour l'inverse ? Pour ceux qui n'ont pas de commentaires ?

Discussions similaires

  1. [RCP] Problème avec Update Manager
    Par Robiwan59 dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 07/03/2007, 16h23
  2. Problème avec "update" du code ASP
    Par ocean_prince11 dans le forum ASP
    Réponses: 14
    Dernier message: 24/11/2006, 18h56
  3. problème avec update dans h:datatable
    Par rarrou dans le forum JSF
    Réponses: 1
    Dernier message: 03/11/2006, 15h22
  4. problème avec update
    Par chingo dans le forum Requêtes
    Réponses: 7
    Dernier message: 14/10/2006, 23h16
  5. [MySQL] Problème avec UPDATE
    Par oim dans le forum PHP & Base de données
    Réponses: 30
    Dernier message: 22/04/2006, 10h12

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