Avatar billede sunezapa Nybegynder
25. august 2003 - 22:42 Der er 16 kommentarer og
1 løsning

SELECT kun een record (den første) pr ID

Access 2000, SQL-forespørgsel fra ASP.
V.h.a. et par queries har jeg en SELECT der afleverer f.eks.:
ID    text
---  --------
17    AAA
17    BBB
17    CCC
18    BBB
18    DDD
19    (tom)

Jeg vil kun ha' een record for hver ID (den første):
ID    text
---  --------
17    AAA
18    BBB
19    (tom = NULL eller "")

kan jeg det...? - sorry:  Hvordan kan jeg det?

Her er den foreløbige lidt barberede SQL:
SELECT tblTour.TourID, tblSuppliers.SupplierNavn
FROM tblTour INNER JOIN (tblSuppliers INNER JOIN (tblDay INNER JOIN tblService ON tblDay.DayID = tblService.ServiceDayID) ON tblSuppliers.SupplierID = tblService.ServiceSupplierID) ON tblTour.TourID = tblDay.DayTourID;
Avatar billede Slettet bruger
25. august 2003 - 22:48 #1
SELECT DISTINCT ...
Avatar billede sunezapa Nybegynder
25. august 2003 - 22:54 #2
Desværre ikke - DISTINCT virker kun hvis records er ens - og det er de jo ikke, da "text" er forskellige. Den er ikke så nem...?
Avatar billede Slettet bruger
25. august 2003 - 22:56 #3
Kan man ikke SELECT DISTINCT(tblTour.TourID), ...

Nej?
Avatar billede kabbak Professor
25. august 2003 - 22:57 #4
der lidt dansk i denne, men det er fra access 2000

SELECT tblTour.TourID,First (tblSuppliers.SupplierNavn) AS FørsteOfSupplierNavn
FROM tblTour INNER JOIN (tblSuppliers INNER JOIN (tblDay INNER JOIN tblService ON tblDay.DayID = tblService.ServiceDayID) ON tblSuppliers.SupplierID = tblService.ServiceSupplierID) ON tblTour.TourID = tblDay.DayTourID;
Avatar billede kabbak Professor
25. august 2003 - 23:04 #5
hvis du i forespørgslen vælger gruppering og så vælger første til gruppering på text , slulle den være der, men jeg kan ikke gennenskue om dine JOIN forhindrer dette
Avatar billede sunezapa Nybegynder
25. august 2003 - 23:06 #6
fejl:
"you tried to execute a query that does not include the specified expression 'TourID' as part of an aggregate function.".
Jeg tror at FIRST virker ligesom TOP 1 - og vil således kun returnere den allerførste record, og ikke den første record for hver ID !
Avatar billede sunezapa Nybegynder
25. august 2003 - 23:07 #7
kabbak: øhhh - noget med GROUP BY...? hvordan vælge rman så "den første" i hver GROUP...?
Avatar billede kabbak Professor
25. august 2003 - 23:10 #8
nej, kun for den du vil se først af, de andre skal ikke røres
Avatar billede kabbak Professor
25. august 2003 - 23:12 #9
brug rullemenuen ved group by
Avatar billede Slettet bruger
25. august 2003 - 23:12 #10
Og hvad er den første iøvrigt? Du sorterer jo ikke på noget?
Avatar billede kabbak Professor
25. august 2003 - 23:15 #11
den første er vel den første den møder med den første id, men sortering på id er vel naturlig.
Avatar billede sunezapa Nybegynder
25. august 2003 - 23:17 #12
Der sorteres efter et felt som ikke vises (og udeladt i spørgsmålet).
komplet: SELECT tblTour.TourID, tblSuppliers.SupplierNavn
FROM tblTour INNER JOIN (tblSuppliers INNER JOIN (tblDay INNER JOIN tblService ON tblDay.DayID = tblService.ServiceDayID) ON tblSuppliers.SupplierID = tblService.ServiceSupplierID) ON tblTour.TourID = tblDay.DayTourID
WHERE (((tblSuppliers.SupplierSupplierTypeID)=3))
ORDER BY tblTour.TourDate, tblDay.DayDate, tblService.ServiceTid
Avatar billede kabbak Professor
25. august 2003 - 23:18 #13
det nemmeste er at lave en ny forespørgsel baseret på den gamle og så lave grupperingerne der.

hvis du laver beregninger i forespørgslen kan du ikke gruppere.
Avatar billede sunezapa Nybegynder
25. august 2003 - 23:20 #14
GROUP BY virker ikke med valg af Første på text - der kommer stadigvæk flere records pr ID.
Avatar billede kabbak Professor
25. august 2003 - 23:22 #15
det er fordi du JOIN flere tabeller

lav en ny forespørgsel på grundlag af den gamle og grupper der.
Avatar billede sunezapa Nybegynder
25. august 2003 - 23:33 #16
Yes - jeg tror det virker - ved at gruppere på den næste forespørgsel (som jeg allerede havde)... lægger du svar så gir jeg point :-)
Avatar billede kabbak Professor
25. august 2003 - 23:34 #17
ok, godt at det virkede til sidst. så her er et svar ;-))
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