Archief - [SQL] Query

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Shaddix

Legacy Member
ik moet een query schrijven maar ik geraak er maar niet uit hoe ik dat efficiënt aanpak

ik heb een tabel waarin de hystorie van muntkoersen wordt bijgehouden

ik heb dus volgende kolommen: munt, koers, datum

nu moet ik daaruit de meest recentste koersen halen

kan iemand mij opweg helpen? :)

sparks

Legacy Member
Een group by op de munt en sorteren op datum, of begrijp ik je verkeerd?

pieta

Legacy Member
1) ik zou nog kolom extra maken: nu zegt ge wel munt, ma tov welke andere munt?
kol1 kol2 kol3
eur usd 1.4182

2) zie hierboven

voltje

Legacy Member
Ik zou het volgende doen:

Tabel Munten met kolommen: MuntID, Land, Munt Afkorting, Munt voluit, ...

Tabel Koersen: Munt1ID, Munt2ID, Koers, Datum

Nu "de meest recente koersen" is niet echt duidelijk he, maar wat kan je doen:

SELECT [HIER DE VELDEN DAT GE NODIG HEBT] FROM Koersen k, Munten m1, Munten m2 WHERE k.Munt1ID = m1.MuntID AND k.Munt2ID = m2.MuntID

Dit geeft u alvast ALLES, maar ik neem aan dat ge per munt enkel de nieuwste wilt ?

SELECT [HIER DE VELDEN DAT GE NODIG HEBT] FROM Koersen k, Munten m1, Munten m2 WHERE k.Munt1ID = m1.MuntID AND k.Munt2ID = m2.MuntID AND m1.Datum = (SELECT MAX(Datum) FROM Koersen k2 WHERE k2.Munt1ID = m1.MuntID AND k2.Munt2ID = m2.MuntID)

't is wel los uit de pols ze :(

Jerre Muesli

Legacy Member
Of mss subquery... Maar dit is allemaal puur giswerk want uw probleemstelling is zéér matig

Shaddix

Legacy Member
ik mag niet aan het db-ontwerp komen

voltje zijn laatste query lijkt mij wel in de goede richting, ik ga daar eens mee proberen! :)

Zhergan

Legacy Member
Je kan altijd het volgende proberen:
select A.*
from Tabel as A inner join (select munt, max(datum) as laatstedatum from Tabel group by munt) as B on (A.munt = B.munt and A.datum = B.laatstedatum)

voltje

Legacy Member
Database ni aanpassen, oh... dan ist makkelijker :P

SELECT t1.* FROM Tabel t1 WHERE t1.Datum = (SELECT MAX(t2.Datum) FROM Tabel t2 WHERE t2.munt = t1.munt)

shadowstep0705

Legacy Member
Kan je eens je db ontwerp geven aub? Dat maakt het voor ons makkelijker

shadowstep0705

Legacy Member
Maar hij had ze toch aangepast?

EDIT: sorry, Votje ik had u verward met de OP ^^
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan