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
Annonceindlæg tema
Cloud & AI
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Har du selv en kolonne i tabelB der afgør hvilken record der er den nyeste? såsom et id nummer eller timestamp
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
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...
præcis, derfor bruge et inline view. hvilken fejl kommer den med. det virker i Oracle
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)
Hej Arne Lige i skabet som altid, takker. Smider du et svar.
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
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)
16. juni 2010 - 15:12
#11
og er svar
16. juni 2010 - 20:12
#12
Det virkede!
Computerworld tilbyder specialiserede kurser i database-management