Avatar billede 3z Nybegynder
17. december 2007 - 16:10 Der er 10 kommentarer og
1 løsning

Sortering af SQL udtræk fra Access

Hej eksperter,

Jeg har en tabel i en Access database med følgende felter:

Tabel:
-----
Invoices

Felter:
------
ID
CustomerID

Samme CustomerID kan sagtens stå flere gange i samme tabel, så hvordan udtrækker jeg en liste, hvor alle ID'er tilhørende samme CustomerID står efter hinanden, men sorteret i ID orden, ikke CustomerID orden ?

Altså en liste hvor jeg finder f.eks. ID-1 som har CustomerID-45. Her udskriver jeg så alle de ID'er som har samme CustomerID. Dernæst går jeg videre til ID-2 og lister alle de ID'er som har denne CustomerID osv. UDEN at samme CustomerID så fremkommer igen længere nede på listen ?

Er det til at forstå hvad jeg mener ? :)
Avatar billede 3z Nybegynder
17. december 2007 - 16:13 #1
Altså en liste á la:
ID-1  = CustomerID-45
ID-5  = CustomerID-45
ID-60 = CustomerID-45

ID-2 = CustomerID-10

ID-3 = CustomerID-23

ID-4  = CustomerID-5
ID-7  = CustomerID-5
ID-23 = CustomerID-5

ID-6 = CustomerID-88
osv
Avatar billede jansangill Nybegynder
17. december 2007 - 16:28 #2
er det ikke bare at sortere efter customerID,id eller id,CustomerID. Afhængelig efter hvordan du vil have det?
Avatar billede passiflora Juniormester
17. december 2007 - 16:42 #3
strsql = "SELECT * FROM tabel ORDER BY customerid,id ASC"
Avatar billede 3z Nybegynder
17. december 2007 - 17:14 #4
Nej for hvis jeg sorterer customerid,id så får jeg en liste sorterer efter customerid. Jeg vil have den kunde med det mindste ID først og derefter den kunde med det næstmindste ID osv

Sorterer jeg id,customerid får jeg jo bare listen som den er sat ind i Access.

Jeg vil finde det mindste ID og udskrive alle de ID'er der så har samme customerID som det mindste ID. Derefter vil jeg finde det næstmindste ID, som ikke allerede er udskrevet og så liste alle de ID'er med samme CustomerID som det.
Avatar billede 3z Nybegynder
17. december 2007 - 17:18 #5
Hver CustomerID skal kun udskrives EN gang med alle de ID'er som tilhører den:
CustomerID
ID 1
ID 5
ID 7
ID 9
osv.

Det er nemt nok, men hvordan får jeg det CustomerID med det lavest tilhørende ID til at stå øverst ? Altså så Customer ID 34 med ID'erne 1,5 og 7 står før Customer ID 2 med ID'erne 3 og 4 ? Fordi Customer ID 34 har ID nr. 1, som er mindre end Customer ID 2's mindste ID, nemlig 3
Avatar billede jansangill Nybegynder
17. december 2007 - 18:17 #6
det kan du nok ikke gøre i din sql, du skal nok kode dig ud af det.

men hvordan lie pt ved jeg ikke.

Hvorfor er det så vigtigt at den skal liste det ud efter din id. Gad det ikke mere mening at den lister alle customerID ud efter hinanden?
Avatar billede passiflora Juniormester
17. december 2007 - 18:23 #7
Ok ... tror heller ikke det kan gøre i sql'en ... her er et kort forslag ...

Hvis du først lave en

strsql = "SELECT distinct customerid from tabel"

Og dernæst en

strsql = "SELECT * FROM tabel ORDER BY id ASC"

I selve bodyen kan du så køre noget i stil med dette ...

Do While Not CIDrs.EOF
Response.write CIDrs("customerid")
Do While Not IDrs.EOF
  If CIDrs("customerid")=IDrs("customerid") Then
    Response.write IDrs("id")
  End if
IDrs.MoveNext
Loop
CIDrs.MoveNext
Loop

Forståeligt ...
Avatar billede softspot Forsker
18. december 2007 - 00:01 #8
Prøv lige denne version:

SELECT i.ID, s.CustomerID
FROM Invoices AS i
INNER JOIN (
  SELECT CustomerID, MIN(ID) AS minid
  FROM Invoices
  GROUP BY CustomerID
  ORDER BY MIN(ID)
) AS s ON s.CustomerID = i.CustomerID
ORDER BY s.minid, i.ID
Avatar billede 3z Nybegynder
18. december 2007 - 00:19 #9
Fuck hvor er det nice softspot - du er KONGEN !

Smid et svar, sidder og jubler højlydt her ;)
Avatar billede softspot Forsker
18. december 2007 - 00:27 #10
Velbekomme :)
Avatar billede softspot Forsker
18. december 2007 - 01:13 #11
Tak for point :)
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
Kurser inden for grundlæggende programmering

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