Avatar billede omn Mester
12. august 2012 - 10:43 Der er 9 kommentarer og
1 løsning

En til mange relation - begræns mange relationen

Jeg har en - "en til mange relation" hvor jeg kun ønsker at se den første record på "mange" siden for hver key på en siden. Jeg har bygget en Querie ovenpå to tabeller der giver følgende resultat.
Key-A -> Key-A 10.08.2012
Key-A -> Key-A 05.07.2012
Key-A -> Key-A 08.06.2012
Key-A -> Key-A 01.02.2011
Key-B -> Key-B 10.06.2012
Key-B -> Key-B 05.04.2012
Key-B -> Key-B 08.09.2012

Men jeg ønsker kun dette resultat.
Key-A -> Key-A 10.08.2012
Key-B -> Key-B 10.06.2012

Kan man i den pågældende Querie filtrere sig frem til dette resultat og i givet fald hvordan ?
Hvis ikke man kan det er der da en anden måde at gøre det på ?
Vh. OMN
Avatar billede larsgrau Forsker
12. august 2012 - 11:09 #1
Ja det kan man.

Åben vis som SQL og skrive DISTINCT foran den kolone som indeholder Key-a key-b osv. så skulle den gerne kun vise dem engang

/lars
Avatar billede omn Mester
12. august 2012 - 12:00 #2
Hej Lars.
Jeg kan ikke helt gennemskue det. jeg har følgende SQL:

SELECT DISTINCT Customer.ID,  Order.ID, Order.LogDato
FROM Customer INNER JOIN [Order] ON Customer.ID = Order.ID
ORDER BY Customer.ID, Order.LogDato DESC;

Men den trækker fortsat alle Order.ID der hører til Customer.ID. Jeg ønsker kun den Order.ID pr. Customer.ID.
I praksis skal jeg kun vise den nyeste/seneste order som en kunde har bestilt
Vh. Ove
Avatar billede Slettet bruger
12. august 2012 - 12:09 #3
Udskift order.logdato med:
last(order.logdato) as SidsteLogDato
Avatar billede Slettet bruger
12. august 2012 - 12:12 #4
Og fjern logdato fra order by
Avatar billede omn Mester
12. august 2012 - 12:38 #5
SELECT DISTINCT Customer.ID, Order.ID, last(order.logdato) as SidsteLogDato
FROM Customer INNER JOIN [Order] ON Customer.ID = Order.ID
ORDER BY Customer.ID DESC;

Ovenstående giver denne meddelelse:

You tried to execute a query that does not include the specified expression "ID" as part of an aggregate function.

Vh . OMN
Avatar billede Slettet bruger
12. august 2012 - 23:30 #6
Jeg var lige væk et øjeblik!~)

Du mangler en group by..

Noget i retningen af:

SELECT DISTINCT Customer.ID, Order.ID, last(order.logdato) as SenesteLogDato
FROM Customer INNER JOIN [Order] ON Customer.ID = Order.ID
GROUP BY Customer.ID, Order.ID
ORDER BY Customer.ID DESC;
Avatar billede omn Mester
18. september 2012 - 18:38 #7
Jeg vil gerne give point for dit svar. Hvis du vil have ulejlighed med at svare endnu engang så vil jeg prøve om jeg kan give to point i denne sag.
Vh. OMN
Avatar billede Slettet bruger
19. september 2012 - 09:23 #8
SELECT DISTINCT Customer.ID, Max(Order.LogDato) AS MaxOfLogDato
FROM Customer INNER JOIN [Order] ON Customer.ID = Order.ID
GROUP BY Customer.ID
ORDER BY Customer.ID;
Avatar billede omn Mester
19. september 2012 - 18:08 #9
Har du kke fået point ?
Avatar billede Slettet bruger
19. september 2012 - 22:51 #10
jo!~)

...og du har fået løst dit problem?
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

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