Accessprobleem: Optellen met tabellen

Pagina: 1
Acties:

  • Hennio
  • Registratie: December 2003
  • Laatst online: 03-08-2025
Ik ben bezig een database te maken voor een kledingvoorraad. Kort gezegd gebeurt hetvolgende;

Tabel 1 heet "Inkoop" en heeft een veld genaamd "Aantal ingekocht",
Tabel 2 heet "Verkoop" en heeft een veld "Aantal verkocht".
In beide tabellen staat ook een veld "ProduktID" waardoor de 2 tabellen gekoppeld worden.

Nu maak ik een query genaamd "voorraad" en die ziet er alsvolgt uit:

Voorraad: [Inkoop]![Aantal ingekocht]-[Verkoop]![Aantal verkocht]

Nu komt het:

Bij voorraad geeft hij nu alleen een waarde aan wanneer een item is verkocht, en anders niet. Hij laat het produktID wel zien, maar laat het voorraadveld leeg.

Voorbeeld:

Tabel: Inkoop

|**Prod.ID**|*Aantal Ingekocht*|
----------------------------------
|____10____|______2_________|
|____11____|______1_________|
|____13____|______3_________|
|____14____|______2_________|


Tabel: Verkoop

|**Prod.ID**|*Aantal Verkocht*|
----------------------------------
|____10____|______1_________|
|____13____|______2_________|


De query laat dan het volgende zien:

Query: Voorraad

|**Prod.ID**|***Voorraad****|
----------------------------------
|____10____|______1_________|
|____11____|________________|
|____13____|______1_________|
|____14____|________________|


Zoals je ziet laat hij bij 11 en 14 geen waarde zien, terwijl die resp. 1 en 2 moeten wezen.

Kan iemand mij helpen dit op te lossen?????_/-\o_

PS. Ik gebruik Access 2002, en ik heb al aardig op google/GOT gezocht ....

Alvast bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 04-09 22:16
Je zult met OUTER JOINS en ISNULL moeten werken:

code:
1
2
3
4
SELECT ISNULL(inkoop.aantal_ingekocht, 0) - ISNULL(verkoop.aantal_verkocht)
FROM producten
LEFT JOIN inkoop ON productid = producten.productid
LEFT JOIN verkoop ON productid = producten.productid


Zoiets ongeveer.

[ Voor 4% gewijzigd door whoami op 02-12-2003 21:03 ]

https://fgheysels.github.io/


  • Hennio
  • Registratie: December 2003
  • Laatst online: 03-08-2025
En waar moet ik dit scriptje dan in te voegen?

(nl. nooit met sql gewerkt..)

  • whoami
  • Registratie: December 2000
  • Laatst online: 04-09 22:16
Als je een query maakt, kan je ook voor SQL weergave kiezen. Daar plak je dat in.

https://fgheysels.github.io/


  • Hennio
  • Registratie: December 2003
  • Laatst online: 03-08-2025
Ontzettend bedankt voor je reactie, maar misschien kan je mij nog een beetje op weg helpen. Als ik hem aanpas zoals ik denk dat hij eruit moet zien, krijg ik syntax-fouten...

Dit is de SQL-code;

SELECT Inkoop.ProduktID, Produkten.Soort, Produkten.Kleur, Produkten.Maat, Produkten.[Jongens/Meisjes], Produkten.[Aanvullende omschr], Inkoop.[Aantal inkoop], Verkoop.[Aantal verkocht], [Aantal inkoop]-[Aantal verkocht] AS [Nieuwe voorraad]

FROM Produkten INNER JOIN (Inkoop LEFT JOIN Verkoop ON Inkoop.ProduktID = Verkoop.ProduktID) ON Produkten.ProduktID = Inkoop.ProduktID

GROUP BY Inkoop.ProduktID, Produkten.Soort, Produkten.Kleur, Produkten.Maat, Produkten.[Jongens/Meisjes], Produkten.[Aanvullende omschr], Inkoop.[Aantal inkoop], Verkoop.[Aantal verkocht], [Aantal inkoop]-[Aantal verkocht]

ORDER BY Inkoop.ProduktID;

  • whoami
  • Registratie: December 2000
  • Laatst online: 04-09 22:16
Je JOIN clausule is verkeerd.
Verander die eens zoals ik die eerder geschreven heb
een GROUP BY clausule heb je niet nodig, aangezien je niet met aggregated functions (zoals sum(), max(), avg() ) werkt.

Schrijf je query dus zo eens:
code:
1
2
3
4
SELECT .... blaat - velden ...
FROM producten
LEFT JOIN Inkoop ON Inkoop.ProductID = Produkten.ProductId
LEFT JOIN Verkoop ON Verkoop.ProductID = Produkten.ProductId

https://fgheysels.github.io/


  • Hennio
  • Registratie: December 2003
  • Laatst online: 03-08-2025
Ik krijg een syntax-error (missing operator) in jouw joinclausule. Ik heb de veldnamen nagelopen, en daar zit geen fout in...

Voor de duidelijkheid, het script ziet er nu zo uit;

SELECT Inkoop.ProduktID, Produkten.Soort, Produkten.Kleur, Produkten.Maat, Produkten.[Jongens/Meisjes], Produkten.[Aanvullende omschr], Inkoop.[Aantal inkoop], Verkoop.[Aantal verkocht], [Aantal inkoop]-[Aantal verkocht] AS [Nieuwe voorraad]

FROM Produkten

LEFT JOIN Inkoop ON Inkoop.ProduktID = Produkten.ProduktID
LEFT JOIN Verkoop ON Verkoop.ProduktID = Produkten.ProduktID

ORDER BY Inkoop.ProduktID;

  • Hennio
  • Registratie: December 2003
  • Laatst online: 03-08-2025
Ik heb het probleem opgelost!

Ik heb deze regel toegepast;

SELECT (ISNULL(Verkoop.[Aantal verkocht])+1) AS [Aantal verkocht], enz..

De JOIN-eigenschappen hoefde ik niet te wijzigen.

Toch weer een stukje verder in de wereld die SQL heet, bedankt...
Pagina: 1