Update waarde uit 2 tabellen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Krysa
  • Registratie: Juni 2010
  • Laatst online: 09:02
Ik zit met het volgende probleem in PostgreSQL:

Ik moet een functie schrijven die het volgende doet:

Voorraad
artikelnr (int)
aantal (int)

Uitgifteregel
artikelnr (int)
aantal (int)


Ontvangstregel
ontvangstnr (int)
artikelnr (int)
aantal (int)



Ik heb al een trigger die bij het toevoegen van een product een voorraad 0 aanmaakt met artikelnr erbij.

Nu moet ik dus een functie schrijven, die de voorraad update wanneer je een ontvangstregel toevoeg, hij moet het aantal updaten in voorraad die op 0 staat. Dit gaat met SOM(aantal.uitgifteregel) - SOM(aantal.ontvangstregel) waar artikelnr NEW.artikelnr is.

Ik had al een nutteloze poging gewaagd als:

UPDATE voorraad SET aantal = SUM(ontvangstregel.aantal) - SUM(uitgifteregel.aantal) WHERE artikelnr=NEW.artikelnr;

Weet iemand iets beters?

[ Voor 35% gewijzigd door Krysa op 31-03-2011 16:17 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Hoe wou je precies een aggregate function loslaten op een tabel die je verder niet als bron aangeeft in je query?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Krysa
  • Registratie: Juni 2010
  • Laatst online: 09:02
Hoe zou ik dat precies moeten doen dan ?
Zou het met een subquery moeten?

Acties:
  • 0 Henk 'm!

Verwijderd

Je zou het zo kunnen oplossen met een subquery

UPDATE voorraad

SET aantal =

( ( select SUM(ontvangstregel.aantal)
from ontvangstregel
where artikelnr = NEW.artikelnr )

-

( select SUM(uitgifteregel.aantal)
from uitgifteregel
where artikelnr = NEW.artikelnr ) )


WHERE artikelnr=NEW.artikelnr;