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 :

Faire un update avec les données d'une autre table


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Faire un update avec les données d'une autre table
    Bonjour

    J'ai 2 tables :
    - Table Personnel
    - Table Pays

    Le lien entre les 2 tables est personnel.usine = table_pays.PaysID (C'est un integer)
    J'ai créé un formulaire qui permet de modifier le pays du personnel.

    Ma requête, qui ne marche pas, est la suivante :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "update Personnel set Personnel.usine = Table_Pays.PaysID " & _
    "FROM Personnel INNER JOIN Table_Pays ON Personnel.Usine = Table_Pays.PaysID" & _
     "WHERE Table_Pays.PaysID = ( SELECT Table_Pays.PaysID FROM Table_Pays " & _
    "WHERE Table_Pays.Pays = '" & CB_Choice_Plant.Text & "') " & _
    "WHERE Personnel.ID_Personne = 1"

    CB_Choice_plant est ma combobox qui permet de sélectionner un pays existant dans ma table pays

    Pourriez vous svp m'aider ?

    En fait je pense que je m’emmêle les pinceaux, et ma requête est n'importe quoi !!
    D'avance merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    L'expression de votre requête est incorrecte : Il y a deux clauses WHERE dans celle-ci, ce qui fait qu'elle est syntaxiquement fausse.
    Par ailleurs vous n'avez pas besoin de cette sous-requête : il vous suffit de réécrire le filtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE		dbo.Personnel
    SET		usine = TP.PaysID
    FROM		dbo.Personnel AS P
    INNER JOIN	Table_Pays AS TP
    			ON P.Usine = TP.PaysID
    WHERE		TP.PaysID = @CB_Choice_Plant__Text
    AND		P.ID_Personne = 1
    Passez des variables, et non pas des chaînes de caractère.
    L'idéal serait que vous vous en remettiez à des procédures stockées.

    @++

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Ne fonctionne pas
    Bonjour et merci de votre réponse

    J'ai essayé votre requête mais j'ai un message d'erreur : " une erreur s'est produite lors de l'analyse de la requête :[ Token line number = 1, token line offset = 41, token in error = FROM ]"

    Je pense que le problème vient d'un FROM dans un UPDATE.
    J'ai utilisé Visual Studio 2010 pour créer ma base de donnée avec Microsoft SQL Server Compact 3.5 et peut être cette syntaxe n'est pas accepté. Est ce correct ?

    Si oui, existe-t-il un moyen de contourner celà ?
    Si non, que dois je faire ?

    D'avance merci de votre aide

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    C'est parce que vous avez du l'utiliser directement. Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    "UPDATE		dbo.Personnel" & _
    "SET		usine = TP.PaysID" & _
    "FROM		dbo.Personnel AS P" & _
    "INNER JOIN	Table_Pays AS TP" & _
    "			ON P.Usine = TP.PaysID" & _
    "WHERE		TP.PaysID = '" & CB_Choice_Plant.Text & "') " & _
    "AND		P.ID_Personne = 1"
    @++

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Message d'erreur
    Merci encore pour votre aide.

    Je n'avais pas essayé directement je l'avais bien écrit comme vous venez de le préciser, mais toujours erreur par rapport au FROM.
    j'ai écrit la requête directement dans l'outil requête et j'ai du corriger comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE       Personnel
    SET                Usine = (SELECT TP.PaysID  FROM  Personnel AS P INNER JOIN
                                                             Table_Pays AS TP ON P.Usine = TP.PaysID)
    WHERE        (ID_Personne = 1) AND (TP.PaysID = 2)
    mais maintenant j'ai une erreur au niveau du SELECT avec source d'erreur : SQL server compact ADO.NET data provider.

    Une idée ? n'aurait il pas un pack SP2 ou quelque chose comme ça pour ce genre de problème ? (Suis sur Windows 7 32bits)

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE P
    SET    Usine = TP.PaysID  
    FROM   dbo.Personnel AS P 
           INNER JOIN dbo.Table_Pays AS TP 
                 ON P.Usine = TP.PaysID
    WHERE  ID_Personne = 1 AND TP.PaysID = 2
    Pourquoi une débauche de parenthèse ? Vous essayez d'écouler un stock acheté à vil prix ? Votre clavier à 345 touches parenthèses ???

    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/ * * * * *

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    C'est l'outil requête de SQLCE qui m'a corrigé celà ainsi. Dans mon code en VB je ne les met pas.

Discussions similaires

  1. [MySQL] Remplir une table avec les données d'une autre table
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/11/2010, 19h41
  2. update avec des données d'une autre table
    Par corto31 dans le forum Requêtes
    Réponses: 13
    Dernier message: 10/07/2008, 16h40
  3. Réponses: 1
    Dernier message: 11/01/2008, 04h57
  4. UPDATE avec les données d'une autre table
    Par henri3m dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/10/2007, 12h09
  5. Réponses: 3
    Dernier message: 18/07/2006, 17h37

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