Avatar billede fbisoft Nybegynder
23. juni 2009 - 09:53 Der er 3 kommentarer

sql query top 1

her med jer

jeg har to tabeller, "vare" og "priser"

hver vare har tilknyttet en pris og prisen har en dato, hvis jeg ændrer priser på varen, er der en "gammel" pris og en "ny" det er den nyeste dato der bestemmer, hvad varen skal koste.

hvordan finder jeg jeg prisen på den nye vare..

jeg skal hente alle varene samt deres priser, men hvis der er flere FK_VareId på priser, skal den tage den af nyeste dato..

vare tabellen består af "vareId","Titel"
Pris tabellen består af "PrisId",FK_vareId", "Dato"


håber i kan hjælpe
Avatar billede olegaarde Nybegynder
24. juni 2009 - 00:49 #1
Skal lige være sikker på jeg forstår det korrekt :-)

Kan din tabel se sådan her ud:

Tabel: vare
-----------
001 Wienerstige

Tabel: pris
-----------
001 001 499,95 12-12 2008
002 001 399,00 12-01 2009

Gætter på der mangler en "pris" i tabellen pris :-)
Umiddelbart - alt efter hvordan det skal bruges - er det nemmeste vel at lede efter det højeste prisid med vareid=001. Det må være den nyeste pris (hvilket forudsætter at der ikke indlægges gamle priser i tabellen).
Ganske utestet må det være noget a'la
SELECT * from pris WHERE FK_vareid=vareid ORDER BY prisid DESC LIMIT 1

--
Med venlig hilsen
Ole
Avatar billede arne_v Ekspert
24. juni 2009 - 01:46 #2
Prøv:

SELECT v.vareid,v.titel,p.pris
FROM vare v,pris p
WHERE v.vareid=p.fk_vareid AND p.dato = (SELECT MAX(p2.dato) FROM pris p2 WHERE p2.fk_vareid=v.vareid)
Avatar billede arne_v Ekspert
04. august 2009 - 03:27 #3
fbisoft ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester