Query voor selecteren hoogste waarde

Status
Niet open voor verdere reacties.

DeGeneraal

Nieuwe gebruiker
Lid geworden
11 jun 2005
Berichten
2
Ik ben voor een schoolopdracht bezig een database met factuurinformatie op te zetten. Ik heb tabellen met klantinformatie, verkopersinformatie, artikelinformatie en factuurinformatie. Ik houd het bewust een beetje globaal, omdat ik denk dat alle andere informatie niets zal toevoegen aan mijn probleemstelling.

De opdracht luidt als volgt: "Maak een query die het artikel (artikelnummer) met de hoogste verkoopprijs laat zien. (TIP: Maak gebruik van de query waarmee de hoogste verkoopprijs wordt bepaald. Neem bij de rij criteria precies de naam van het veld MaxVan…. over. Let op dat er voor deze query een tabel en een query moet worden gebruikt)."

Er staan dus verschillende artikelnummers in de tabel ARTIKEL, en de duurste ervan heb ik met een query weten te verkrijgen. Wat hierboven echter staat beschreven kan ik niet voor elkaar krijgen, ook niet na 2 uur proberen op allerlei manieren. Het probleem zit em erin dat ik WEL de hoogste prijs kan laten zien, maar ik kan daarbij niet ook het artikelnummer dat bij deze prijs hoort laten zien. Als ik dat probeer krijg ik namelijk een errormessage.

Hier even kort een foto-uitleg voor de duidelijkheid:

Deze query zorgt voor het laten zien van de hoogst bekende adviesprijs:
Foto 1

Vervolgens is dit het resultaat
Foto 2

Maar we willen daarbij ook het artikelnummer zien, dus pas ik de query als volgt aan:
Foto 3

Maar dan krijg ik deze error:
Foto 4

Wat ik ook nog geprobeerd heb, is op deze manier:

Foto 6

Dit geeft geen error, maar gewoon een leeg veld:

Foto 7

Kan iemand mij alsjeblieft uitleggen wat ik fout doe?
 
Laatst bewerkt:
het criterium wordt impliciet meegenomen omdat je de max van een veld neemt. per definitie is het resultaat 1 record.

als je het duurste artikel wilt tonen moet dat met een subquery

Code:
Select Prijs, Artikelnummer 
From Tabelnaam
Where Prijs = 
   (Select max(prijs) as HoogstePrijs From Tabelnaam)

De subquery bepaald de hoogste prijs in de tabel. Dit resultaat wordt via de where clause doorgegeven aan de hoofdquery die Artikelnummer en prijs terug geeft.
Het eindresultaat kunnen meerdere records zijn omdat er meerdere artikelen kunnen zijn met die hoogste prijs.

Oh ja, deze query moet je ff cutten en pasten in het SQL schermpje.

weest gegroet,
Guus
 
bedankt voor je uitleg! Het werkt nu inderdaad!

Ik wil er echter graag ook nog wat van leren, zou je misschien in lekentaal kunnen uitleggen wat dit nou precies doet, en hoe ik het grafisch kan invoeren? :o
 
Ik dacht dat ik het al had uitgelegd:(

Het resultaat van de subquery is de hoogste prijs in de tabel.
Aangezien er maar 1 de hoogste kan zijn levert dit 1 record op. De waarde die teruggegeven wordt dient als input voor de where clause van de hoofdquery.

In wezen kan je de tekst "as Hoogsteprijs" weglaten, die heb je niet nodig. Maar het is de manier waarop ik werk.

Met grafisch invoeren bedoel je mbv de query designer van Access?
Als je de query aanpast en plakt in de query designer onder het knopje SQL, zie je als je op de grafische weergave klikt wat Access ervan gemaakt heeft.
Je zal zien dat de subquery als select statement is opgenomen in de where clause van de hoofdquery.

Je kan dit probleem in twee stappen oplossen:
Door de subquery te maken in de designer en deze (SQL) te plakken in de where clause van de hoofdquery.

Duidelijker kan ik het niet maken.

Weest gegroet,
Guus
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan