20. august 2010 - 11:26Der er
1 kommentar og 1 løsning
Distinct udtræk med full join
Jeg har to tabeller A og B, fra hvilke jeg skal udtrække variablene A.x, B.x, A.y, B.y, A.z, B.z med en join baseret på A.CPR og B.CPR. I både A og B er der CPR, som ikke findes i den anden tabel, og i B er der mange CPR, som er med flere gange. Jeg skal bruge alle unikke CPR fra såvel A som B (full join), men hvert af dem kun en gang. Fra B vil jeg helst have den seneste registrering (B.dato), men det er ikke afgørende. Jeg kan ikke lige her og nu gennemskue, hvordan jeg skruer den sammen, og jeg skal stort set bruge det nu, så der er 100 point til den, der kan levere en funktionsdygtig løsning inden kl. 12.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Ikke til klokken 12 og ikke med FULL JOIN fordi jeg bruger MYSQL og der skal man bruge LEFT JOIN og UNION og RIGHT JOIN, men her er en loesning. Jeg lavede for test nedenstaaende to tabeller og fyldte data i og med denne query fik jeg det forventede resultat, alle CPRs i A, alle CPRs i B kun en gang hver med den nyeste registrering:
SELECT a.CPR, b.CPR, a.x, a.y, b.x, b.y FROM ae03A a LEFT JOIN (SELECT CPR, x, y, MAX(dato) FROM ae03B GROUP BY CPR) b ON a.CPR = b.CPR UNION SELECT a.CPR, b.CPR, a.x, a.y, b.x, b.y FROM ae03A a RIGHT JOIN (SELECT CPR, x, y, MAX(dato) FROM ae03B GROUP BY CPR) b ON a.CPR = b.CPR
med dette resultat (jeg inkluderede CPRerne for at demonstrere resultatet):
En såre simpel og "smuk" løsning, som absolut ser ud til at ville virke. Jeg har ikke testet den på egne data, da jeg lige skal have et par andre joins ind over for at danne tabel a. Det bliver først mandag, for nu haster det ikke længere helt så meget.
Selv om det ikke var inden min haste-deadline kl. 12, får du pointene, for jeg kan stadig bruge løsningen, og så slipper jeg for at bruge et tid i weekenden på at udvikle den selv.
Tak for hjælpen og god weekend.
Lars
Synes godt om
Ny brugerNybegynder
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.