[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ésolu]UPDATE SQL sur deux tables:"column not found"

Messagepar Sampic » 26 Juin 2014 17:52

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é 40 fois
Dernière édition par Sampic le 29 Juin 2014 11:21, édité 9 fois.
LibO 4.1.5.3, sous W7-32
Sampic
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Mars 2013 09:16

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

Messagepar jeanmimi » 26 Juin 2014 21:26

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 édition par jeanmimi le 27 Juin 2014 07:38, édité 1 fois.
LibreOffice Version : Version: 6.3.3.2 (x64) (4 novembre 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15076
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar Sampic » 26 Juin 2014 22:50

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
Sampic
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Mars 2013 09:16

Re: Erreur SQL : "column not found"

Messagepar Piaf » 27 Juin 2014 18:31

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   AgrandirRéduire
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 édition par Piaf le 28 Juin 2014 12:07, édité 1 fois.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: Erreur SQL : "column not found"

Messagepar Sampic » 28 Juin 2014 10:07

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é
 
Message(s) : 6
Inscrit le : 13 Mars 2013 09:16

Re: Erreur SQL : "column not found"

Messagepar Sampic » 28 Juin 2014 10:40

: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   AgrandirRéduire
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
Sampic
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Mars 2013 09:16

Re: Erreur SQL : "column not found"

Messagepar Piaf » 28 Juin 2014 12:07

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
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: Erreur SQL : "column not found"

Messagepar Sampic » 28 Juin 2014 12:29

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
Sampic
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Mars 2013 09:16

Re: Erreur SQL : "column not found"

Messagepar Piaf » 28 Juin 2014 18:50

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
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar Sampic » 28 Juin 2014 18:56

Youps on l'a fait tous les deux en même temps...
Sujet clos, merci encore.
LibO 4.1.5.3, sous W7-32
Sampic
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 13 Mars 2013 09:16

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

Messagepar micmac » 28 Juin 2014 19:03

Bonjour,
Sampic a écrit:Sujet clos

Reste à baliser [Résolu] Image
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6334
Inscrit le : 28 Août 2010 09:45


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)