Avatar billede Per Juniormester
08. februar 2017 - 10:53 Der er 16 kommentarer og
1 løsning

Filter i en Forespørgsel

Hej

Jeg er ny på "Eksperten", er 100% selvoplært i access og beklager på forhånd, hvis mit problem ikke er korrekt beskrevet.

Jeg har en forespørgsel, der ser i en tabel hvor jeg taster fragt priser. dvs at der er: Fra, Til, Pris og Dato. Hvis jeg får en ny pris, hvor fra og til er det samme, taster jeg igen og får en ekstra post med et andet ID

Jeg vil kun se den seneste.

Hvordan kan dette problem løses ?

På forhånd tak 

mvh
Per
Avatar billede dragnor Juniormester
08. februar 2017 - 14:37 #1
Du sikre dig det ved at bruge GROUP BY med Max på dit ID felt, som jeg antager er et fortløbende nummer?
Avatar billede dragnor Juniormester
08. februar 2017 - 14:40 #2
SELECT Max(t.ID) AS MaxOfID, t.Fra, t.Til, Last(t.Pris) AS LastOfPris, Last(t.Dato) AS LastOfDato
FROM t
GROUP BY t.Fra, t.Til;
Avatar billede Per Juniormester
08. februar 2017 - 14:58 #3
hej
mit Id felt er fortløbende
hvor sætter jeg ovenstående ind ?
Avatar billede dragnor Juniormester
08. februar 2017 - 15:49 #4
Kan jeg se din forespørgsel?
Avatar billede Per Juniormester
08. februar 2017 - 16:01 #5
Gerne - men hvordan ?
Avatar billede Per Juniormester
08. februar 2017 - 16:04 #6
SELECT Data.DataID, Data.Date, City.City, City.Country, City_1.City, City_1.Country, Data.PriceAllInclEUR, Forwarder.Forwarder, [Shipping Person].ShippingPerson, Data.PiceNote
FROM City AS City_1 INNER JOIN (City INNER JOIN ((Data INNER JOIN Forwarder ON Data.ForwarderID = Forwarder.ForwarderID) INNER JOIN [Shipping Person] ON Data.ShippingPersonID = [Shipping Person].ShippingPersonID) ON City.CityID = Data.LoadingCity) ON City_1.CityID = Data.DeliveryCity;
Avatar billede dragnor Juniormester
08. februar 2017 - 16:17 #7
Jeg antager at Data.DataID er dit ID felt :-)

Data.PiceNote må være din pris

Data.Date må være din dato som du henviste til?

Men hvad er "Fra" og "Til"  ???
Avatar billede terry Ekspert
08. februar 2017 - 16:30 #8
"Fra, Til, Pris og Dato. Hvis jeg får en ny pris, hvor fra og til er det samme"

Looking at the sql #6 I'm guessing that although fra and til might be the same, other fields will not. So GROUPing isn't going to work :-(

and as dragnor asks, "hvad er "Fra" og "Til"  ??? "
Avatar billede Per Juniormester
08. februar 2017 - 16:47 #9
City.City, City.Country = fra
City_1.City, City_1.Country = til
det er samme tabel, brugt  gange
Avatar billede terry Ekspert
08. februar 2017 - 17:54 #10
Any chance of getting a copy of the dB?
ekspertenATsanthell.dk
AT = @
Avatar billede Per Juniormester
08. februar 2017 - 18:06 #11
Hello Terry
its on the way
B.r.
Per
Avatar billede terry Ekspert
08. februar 2017 - 18:55 #12
;-)
Avatar billede terry Ekspert
08. februar 2017 - 19:21 #13
DataID    Date    City.City    City.Country    City_1.City    City_1.Country    PriceAllInclEUR    Forwarder    ShippingPerson    PiceNote
60    24/11/2016    Alba    Romania    Novi Sad    Serbia    850    Quattro-sped    Malene Messersmith   
102    27/01/2017    Alba    Romania    Novi Sad    Serbia    850    Zaliv    Bo Koch   
101    27/01/2017    Alba    Romania    Novi Sad    Serbia    900    Ralu    Bo Koch   

This is an extract of the SQL you gave #6 showing data for Alva to Novi Sad. Taking the price for newest (highest DataID = 102) the price is 850. So you only want too see data for 102, not other records for  Alva to Novi Sad?
Avatar billede terry Ekspert
08. februar 2017 - 19:31 #14
First make a query and give it a name, I've used qryGroupCity2City in example.
This query is only to find highest DataID.
SELECT Max(Data.DataID) AS MaxOfDataID, City.City, City.Country, City_1.City, City_1.Country
FROM City AS City_1 INNER JOIN (City INNER JOIN Data ON City.CityID = Data.LoadingCity) ON City_1.CityID = Data.DeliveryCity
GROUP BY City.City, City.Country, City_1.City, City_1.Country;

Now make a new query using this SQL to give you result

SELECT qryGroupCity2City.MaxOfDataID, qryGroupCity2City.City.City, qryGroupCity2City.City.Country, qryGroupCity2City.City_1.City, qryGroupCity2City.City_1.Country, Forwarder.Forwarder, [Shipping Person].ShippingPerson, Data.Date, Data.PriceAllInclEUR
FROM ((qryGroupCity2City INNER JOIN Data ON qryGroupCity2City.MaxOfDataID = Data.DataID) INNER JOIN Forwarder ON Data.ForwarderID = Forwarder.ForwarderID) INNER JOIN [Shipping Person] ON Data.ShippingPersonID = [Shipping Person].ShippingPersonID;
Avatar billede terry Ekspert
08. februar 2017 - 19:33 #15
And in the result query you dont really need MaxOfDataID  :-)
Avatar billede terry Ekspert
08. februar 2017 - 19:33 #16
It could all be done in one query but this is the easiest
Avatar billede terry Ekspert
08. februar 2017 - 20:22 #17
Thanks. I think I forgot to add field Data.PiceNote
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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