Avatar billede max33 Nybegynder
15. juni 2010 - 16:09 Der er 11 kommentarer og
1 løsning

LEFT JOIN TabelB Nyest Record

Hej

Jeg skal bruge data fra TabelB i min select, men skal vælge den nyeste record, hvordan skruer jeg lige det sammen?

PT:

Select * From TabelA LEFT JOIN TabelB ON TabelA.ID = TabelB.TabelA_ID

I TabelB har jeg flere records med samme værdi i feltet TabelA_ID.

Men Vil have den nyeste Record fra TabelB
Avatar billede madiedk Nybegynder
15. juni 2010 - 16:33 #1
Har du selv en kolonne i tabelB der afgør hvilken record der er den nyeste? såsom et id nummer eller timestamp
Avatar billede max33 Nybegynder
15. juni 2010 - 16:49 #2
ja
Avatar billede max33 Nybegynder
15. juni 2010 - 16:49 #3
Ja jeg har et ID
Avatar billede madiedk Nybegynder
15. juni 2010 - 18:59 #4
Nu kommer jeg fra et Oracle miljø, men går udfra mysql kan klarer inline views.
Så prøv med:

Select * From TabelA LEFT JOIN (select max(id), TabelA_ID from TabelB group by TabelA_ID) as tb_x ON TabelA.ID = tb_x.TabelA_ID
Avatar billede max33 Nybegynder
15. juni 2010 - 20:32 #5
Virker ikke helt...

Hvis jeg nu laver følgende:
select max(id), TabelA_ID from TabelB group by TabelA_ID

Får jeg godt nok id fra den sidste record, men resten af data er fra første record, som jeg ser det...
Avatar billede madiedk Nybegynder
15. juni 2010 - 23:59 #6
præcis, derfor bruge et inline view. hvilken fejl kommer den med. det virker i Oracle
Avatar billede arne_v Ekspert
16. juni 2010 - 04:10 #7
prøv:

SELECT *
FROM TabelA a LEFT JOIN TabelB b1 ON a.ID = b1.TabelA_ID
WHERE b1.x = (SELECT MAX(x) FROM TabelB b2 WHERE b2.TabelA_ID=b1.TabelA_ID)
Avatar billede max33 Nybegynder
16. juni 2010 - 10:38 #8
Hej Arne

Lige i skabet som altid, takker.

Smider du et svar.
Avatar billede max33 Nybegynder
16. juni 2010 - 10:52 #9
og måske lige lidt finpusning...

hvis der ikke er nogen record i TabelB som passer til TabelA.ID så bliver record i tabelA ikke vist...

Vil gerne have vist record fra TabelA selvom der ikker match fra TabelB

Bare for at være vanskelig
Avatar billede arne_v Ekspert
16. juni 2010 - 15:12 #10
proev:

...
WHERE b1.x IS NULL OR b1.x = (SELECT MAX(x) FROM TabelB b2 WHERE b2.TabelA_ID=b1.TabelA_ID)
Avatar billede arne_v Ekspert
16. juni 2010 - 15:12 #11
og er svar
Avatar billede max33 Nybegynder
16. juni 2010 - 20:12 #12
Det virkede!
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