Avatar billede michaelgm Nybegynder
22. november 2007 - 22:00 Der er 4 kommentarer og
1 løsning

Join på max

Hej jeg kan ikke få den til at finde den seneste dato på vke.dato og vk.Dato

Jeg har prøvet at udksrive cv uden join.. giver kun en af hver bus, har prøvet hver sub select med dato altså vk.Dato og Vke.dato giver kun en dato.. Nogen der kan se hvor det ikke hænger sammen?

SELECT DISTINCT
cv.BUS,
vs.Km,
vke.kmtaeller,
vke.kmtjek,
DATE_FORMAT(vke.dato,'%d-%m-%Y') AS dato
FROM
c2.vognlob AS cv
Inner Join vaerksted.vspeedo AS vs ON cv.BUS = vs.vognnr
Inner Join vaerksted.kmeftersyn AS vke ON cv.BUS = vke.busnr
WHERE
cv.PLANPERIODE =  '19' AND
vs.Dato = (SELECT MAX(vss.Dato) FROM vaerksted.vspeedo AS vss WHERE vss.vognnr=cv.BUS) AND
vke.dato = (SELECT MAX(vk.Dato) FROM vaerksted.kmeftersyn AS vk WHERE vk.busnr=cv.BUS)
ORDER BY
cv.BUS
Avatar billede michaelgm Nybegynder
22. november 2007 - 23:19 #1
Har os prøvet:

SELECT DISTINCT
cv.BUS,
vs.Km,
vke.kmtaeller,
vke.kmtjek,
DATE_FORMAT(vke.dato,'%d-%m-%Y') AS dato
FROM
c2.vognlob AS cv
Inner Join vaerksted.vspeedo AS vs ON cv.BUS = vs.vognnr AND vs.Dato = (SELECT MAX(vss.Dato) FROM vaerksted.vspeedo AS vss WHERE vss.vognnr=cv.BUS)
LEFT OUTER Join vaerksted.kmeftersyn AS vke ON cv.BUS = vke.busnr AND vke.dato = (SELECT MAX(vk.Dato) FROM vaerksted.kmeftersyn AS vk WHERE vk.busnr=cv.BUS)
WHERE
cv.PLANPERIODE =  '19'
ORDER BY
cv.BUS

men det dur heller ikke
Avatar billede michaelgm Nybegynder
23. november 2007 - 00:10 #2
SELECT DISTINCT
cv.BUS,
vs.Km,
vke.kmtaeller,
vke.kmtjek,
DATE_FORMAT(vke.dato,'%d-%m-%Y') AS dato
FROM
c2.vognlob AS cv
LEFT OUTER Join vaerksted.kmeftersyn AS vke ON cv.BUS = vke.busnr AND vke.dato=(SELECT MAX(vk.Dato) FROM vaerksted.kmeftersyn AS vk)
inner Join vaerksted.vspeedo AS vs ON cv.BUS = vs.vognnr  AND vs.Dato=(SELECT MAX(vss.Dato) FROM vaerksted.vspeedo AS vss)
ORDER BY cv.BUS

Tror jeg er på sporet af det.. Håber stadig der er nogen der kan se hvad der går galt
Avatar billede michaelgm Nybegynder
23. november 2007 - 00:24 #3
SELECT DISTINCT
cv.BUS,
vs.Km,
vke.kmtaeller,
vke.kmtjek,
DATE_FORMAT(vke.dato,'%d-%m-%Y') AS dato
FROM
c2.vognlob AS cv
inner Join vaerksted.vspeedo AS vs ON cv.BUS = vs.vognnr AND vs.Dato=(SELECT MAX(vss.Dato) FROM vaerksted.vspeedo AS vss WHERE vss.vognnr=vs.vognnr) 
LEFT OUTER Join vaerksted.kmeftersyn AS vke ON cv.BUS = vke.busnr  AND vke.dato=(SELECT MAX(vk.Dato) FROM vaerksted.kmeftersyn AS vk WHERE vk.busnr=vke.busnr)
ORDER BY
cv.BUS

Her virker den uden denne linie:
inner Join vaerksted.vspeedo AS vs ON cv.BUS = vs.vognnr AND vs.Dato=(SELECT MAX(vss.Dato) FROM vaerksted.vspeedo AS vss WHERE vss.vognnr=vs.vognnr)

Så det må være der den går galt. Forstår det ikke.. For har kun en bus pr dato. Og når jeg så trækker sidste dato ud og busnr .. så burde den være der..
Er det mig der overser noget?
Avatar billede michaelgm Nybegynder
23. november 2007 - 00:52 #4
Problemet er at der kan komme 2 på en dato i vspeedo.. :( Nogen der har en idé til at løse det?
Avatar billede michaelgm Nybegynder
23. november 2007 - 19:36 #5
Jeg lukker
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