SQL et les Update multi lignes

SQL et les Update multi lignes - SQL/NoSQL - Programmation

Marsh Posté le 14-05-2014 à 17:41:29    

Bonsoir à tous !  
 
J'essaie désespérément de transférer des champs d'une table à une autre via une requête UPDATE, mais Access m'insulte en me faisant comprendre que j'essaie de bouger plusieurs lignes ( L'opération doit utiliser une requête qui peut être mise à jour. ), ou alors je n'ai rien compris.
 
Pour la faire courte , j'ai une table Tiers et une table Facture. Dans la table Tiers, j'ai un champ Code et un champ Solde.  
J'aimerais alimenter ce champ Solde pour mes clients à partir d'un calcul fais a partir de deux autres champs de la table Facture, qui calcule en gros la différence entre le montant total et le montant réglé.  
 
Table Tiers : | Code | Solde |
Table Facture : | Code | Total | Regle |
 

Code :
  1. UPDATE Tiers
  2. Set Tiers.Solde = (Select (SUM(Total) - SUM(Regle)) as Somme
  3. From Facture
  4. Group by Code
  5. Order By Code )
  6. Where Tiers.Code = Facture.Code


 
J'ai cru comprendre que c'était compliqué, je vous avouerais que je n'ai pas trouvé mon bonheur en cherchant à travers la toile.  
 
Merci de l'attention que vous saurez y apporter  :)

Reply

Marsh Posté le 14-05-2014 à 17:41:29   

Reply

Marsh Posté le 14-05-2014 à 22:55:16    

C'est pas étrange,
ton select qui te permet de faire ton calcul, remonte plusieurs lignes (pour un même enregistrement)
donc erreur...

 

update tiers as a
set a.solde = (select SUM(Total) - SUM(Regle) from factures as b  where
b.code = a.code
Group by b.code (peut être pas obligatoire...)
)

 

ta clause where ne doit même pas passer... car le code de facture ne doit même pas être connue (dans ce "segment" de ta requête)

 

guillaume


Message édité par gpl73 le 14-05-2014 à 22:57:00

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
Reply

Marsh Posté le 15-05-2014 à 14:23:31    

Moi, y'a un truc qui me choc : il fait un group by sur un champ qui n'apparaît pas dans le SELECT :heink: Du coup, c'est pour ça qu'il se retrouve avec plusieurs enregistrements.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-05-2014 à 21:04:21    

oui et non :)
le group by "marche" bien... et le champ groupé n'est pas pas obligatoire dans les champs du select... juste que c'est "mieux" pour savoir à quoi correspond ton calcul lol
Mais ici, le soucis, c'est que le source ne faisait pas de d'égalité pour faire le sum sur un seul code...
Guillaume
 


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed