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

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Répondre
Sampic
Fraîchement OOthentifié
Messages : 6
Inscription : 13 mars 2013 09:16

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

Message 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...
Pièces jointes
Pb column not found.odb
(84.56 Kio) Téléchargé 136 fois
Dernière modification par Sampic le 29 juin 2014 12:21, modifié 9 fois.
LibO 4.1.5.3, sous W7-32
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

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

Message 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.
Dernière modification par jeanmimi le 27 juin 2014 08:38, modifié 1 fois.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Sampic
Fraîchement OOthentifié
Messages : 6
Inscription : 13 mars 2013 09:16

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

Message 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.
LibO 4.1.5.3, sous W7-32
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Erreur SQL : "column not found"

Message 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+
Dernière modification par Piaf le 28 juin 2014 13:07, modifié 1 fois.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Sampic
Fraîchement OOthentifié
Messages : 6
Inscription : 13 mars 2013 09:16

Re: Erreur SQL : "column not found"

Message 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.
LibO 4.1.5.3, sous W7-32
Sampic
Fraîchement OOthentifié
Messages : 6
Inscription : 13 mars 2013 09:16

Re: Erreur SQL : "column not found"

Message 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.
@++
LibO 4.1.5.3, sous W7-32
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Erreur SQL : "column not found"

Message 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+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Sampic
Fraîchement OOthentifié
Messages : 6
Inscription : 13 mars 2013 09:16

Re: Erreur SQL : "column not found"

Message 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...
LibO 4.1.5.3, sous W7-32
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: Erreur SQL : "column not found"

Message par Piaf »

Bonjour
Il faut modifier le titre dans sujet :)
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Sampic
Fraîchement OOthentifié
Messages : 6
Inscription : 13 mars 2013 09:16

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

Message par Sampic »

Youps on l'a fait tous les deux en même temps...
Sujet clos, merci encore.
LibO 4.1.5.3, sous W7-32
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9224
Inscription : 28 août 2010 10:45

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

Message par micmac »

Bonjour,
[b][color=#404080]Sampic[/color][/b] a écrit :Sujet clos
Reste à baliser [Résolu] Image
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Répondre