Page 1 sur 1

[Résolu]UPDATE SQL sur deux tables:"column not found"

Publié : 26 juin 2014 16:52
par Sampic
Bonjour à tous,

Voilà quelques heures que je patauge sur quelque chose qui me paraissait si simple pour le néophyte que je suis .... et bien non...

Deux tables: une "tbl-articles", une "tbl-tarifs"
Dans "tbl-articles" deux champs "reffrs" et "PrixHT"
Dans "tbl-tarifs" deux champs "Reffrs" et "Prixnet"

Je dois juste mettre à jour les "Prix HT" de "tbl-article" par les "Prixnet" de "tbl-tarifs" car ils sont plus récents.

J'ai tenté:
update "tbl-articles"
set "tbl-articles"."PrixHT"="tbl-tarifs"."Prixnet"
where "tbl-articles"."reffrs"= "tbl-tarifs"."Reffrs"

et bien non je reçois le message "Column "tbl-tarifs"."Ref frs" not found" (alors que j'ai fait d'autres essais un peu de toute sorte où il me la trouve, la modifie et tout ce que je veux sans problème). J'ai pensé aux formats, les deux sont en "Décimal"... Je sèche complet... :marto:

Merci d'avance pour d'éventuelles idées.
Bonne continuation à tous...

Re: Erreur: "column not found" sur requête SQL sous LibO Bas

Publié : 26 juin 2014 20:26
par jeanmimi
Bonjour,
Je reproduis ce que tu décris.
Dans l'idéal, il faudrait éviter les espaces dans les noms des champs des Tables même si je ne suis pas sûr que ce soit l'origine du problème.

Re: Erreur: "column not found" sur requête SQL sous LibO Bas

Publié : 26 juin 2014 21:50
par Sampic
Merci de l'intervention.
Oui tout à fait évitons les espaces, je mérite un remontage de bretelles... ça y est c'est corrigé.
Pff je m'aperçois que j'ai aussi un accent dans un nom de champ... bon il ne concerne pas le sujet lui je le modifierai plus tard.

Re: Erreur SQL : "column not found"

Publié : 27 juin 2014 17:31
par Piaf
Bonjour
Sampic a écrit :J'ai tenté:
update "tbl-articles"
set "tbl-articles"."PrixHT"="tbl-tarifs"."Prixnet"
where "tbl-articles"."reffrs"= "tbl-tarifs"."Reffrs"
A priori il est normal que cette commande ne fonctionne pas.
Sampic a écrit :(alors que j'ai fait d'autres essais un peu de toute sorte où il me la trouve, la modifie et tout ce que je veux sans problème).
Curieux de voir un essai qui fonctionne.
Le guide HSQLDB donne comme exemple pour la commande UPDATE.
Guide HSQLDB a écrit :Exemple de commande à saisir en SQL direct :
UPDATE "Clients"
SET "Nom" = (SELECT "Nom" FROM "AjoutClients" WHERE "AjoutClients"."ID" = "Clients"."ID")
Dans ta base, la commande tapée avec la syntaxe correcte modifie la valeur du prixHT de la table Articles par la valeur de Prixnet de la table Tarifs pour les champs ayant la même valeur Reffrs.
La commande telle quel à l'énorme inconvénient de remettre à vide tous les autres prixHT de la table Articles !!!!
Problème de la version HSQLDB embarquée je présume,
HSQLDB a écrit :Update rows of a table. An UPDATE statement selects rows from the <target table> using an implicit SELECT statement formed in the following manner:
SELECT * FROM <target table> [ [ AS ] <correlation name> ] [ WHERE <search condition> ]
Then it applies the SET <set clause list> expression to each selected row.
A priori "l'implicit SELECT" ne se fait pas.
Une solution éventuelle trouvée sur le Forum Anglais
How to update between two tables?
Pour ton UPDATE :

Code : Tout sélectionner

UPDATE "tbl-articles" SET "PrixHT" = (SELECT "Prixnet" FROM "tbl-tarifs" WHERE "Reffrs" = "tbl-articles"."reffrs") WHERE EXISTS
(SELECT "Prixnet" FROM "tbl-tarifs" WHERE "tbl-articles"."reffrs" = "Reffrs")
A+

Re: Erreur SQL : "column not found"

Publié : 28 juin 2014 09:07
par Sampic
Sampic a écrit :update "tbl-articles"
set "tbl-articles"."PrixHT"="tbl-tarifs"."Prixnet"
where "tbl-articles"."reffrs"= "tbl-tarifs"."Reffrs"
Piaf a écrit :Curieux de voir un essai qui fonctionne.
Salut Piaf, mille mercis pour ton intervention.

Voilà pour info ce qui a marché et m'a donc laissé croire que j'étais sur une piste viable:
update "tbl-articles"
set "tbl-articles"."PrixHT"= 99999999
where "tbl-articles"."reffrs" = 212000030

Me voilà bien mieux armé maintenant, je ne savais même pas qu'il me fallait me référer à un guide HSQLDB.... (tu vois mon niveau).
Effectivement tu as bien anticipé, si ma mise à jour met à zéro les autres articles ça va pas le faire....
Je me lance donc sur la piste que tu joins à la fin, t'en remercie encore et promets des nouvelles assez rapidement.

Re: Erreur SQL : "column not found"

Publié : 28 juin 2014 09:40
par Sampic
:bravo: :bravo: :bravo:

Hé mais c'est que ça marche!!!! Il y avait juste un "S" manquant à la commande EXISTS (c'est bon l'erreur était dans mes cordes).

Code : Tout sélectionner

UPDATE "tbl-articles" SET "PrixHT" = (SELECT "Prixnet" FROM "tbl-tarifs" WHERE "Reffrs" = "tbl-articles"."reffrs") WHERE EXISTS
    (SELECT "Prixnet" FROM "tbl-tarifs" WHERE "tbl-articles"."reffrs" = "Reffrs")
Pour être mieux référencé il faudrait changer un peu le titre du fil clos, quelqu'un sait si c'est possible?

Encore merci Piaf c'est vraiment cool de ta part de t'être penché ainsi sur mon cas.
@++

Re: Erreur SQL : "column not found"

Publié : 28 juin 2014 11:07
par Piaf
Bonjour
J'avais effectivement oublié de le S de EXISTS :oops:
 Ajout : Corrigé 
Sampic a écrit :Pour être mieux référencé il faudrait changer un peu le titre du fil clos, quelqu'un sait si c'est possible?
+1
Tu édites ton premier message et tu changes le titre, quelque chose du genre SQL UPDATE sur deux tables.
A+

Re: Erreur SQL : "column not found"

Publié : 28 juin 2014 11:29
par Sampic
Piaf a écrit :Tu édites ton premier message et tu changes le titre, quelque chose du genre SQL UPDATE sur deux tables.
A+
J'avais essayé mais en éditant mon premier post je n'ai que son contenu dans la fenêtre d'édition... le titre du fil apparaît au dessus en lien non éditable.
La prochaine fois je réfléchirai 2mn à un titre optimisé d'entrée de jeu...

Re: Erreur SQL : "column not found"

Publié : 28 juin 2014 17:50
par Piaf
Bonjour
Il faut modifier le titre dans sujet :)
A+

Re: UPDATE SQL deux tables donne "column not found"

Publié : 28 juin 2014 17:56
par Sampic
Youps on l'a fait tous les deux en même temps...
Sujet clos, merci encore.

Re: UPDATE SQL deux tables donne "column not found"

Publié : 28 juin 2014 18:03
par micmac
Bonjour,
[b][color=#404080]Sampic[/color][/b] a écrit :Sujet clos
Reste à baliser [Résolu] Image