Avatar billede totalpc Seniormester
17. maj 2021 - 14:46 Der er 1 kommentar

En ekstra parameter i where clause giver forkert output

Hej
Jeg har denne kode der udtrækker den fisk med den største vægt, for hver art, for hvert medlem pr år.
Problemet er at hvis der nu er et medlem der indvejer samme art med nøjagtig samme vægt, så kommer begge fisk ud i den art. Det er ikke meningen. Jeg forsøgte så at sætte ind at hvis der var ens vægt, så skulle den tage den længste af de 2. Dvs max laengde. Men det fjernede så nogle andre resultater, som var rigtige nok. Er det nogle der kan gennemskue det og hjælpe mig med at skrive nedenstående korrekt ?

SELECT a.id,a.medlemsnr,a.navn,a.baadnavn, a.Vaegt maxvaegt
FROM    ct_storfanger_indberetninger a,
        (
            select medlemsnr, art, YEAR(dato) year, MAX(vaegt) maxVaegt
            FROM ct_storfanger_indberetninger
            where godkendt=1
            GROUP BY medlemsnr, art, YEAR(dato)
        ) maxArt

WHERE a.medlemsnr = maxArt.medlemsnr
ANd a.art = maxArt.art
AND a.vaegt = maxArt.maxVaegt
AND YEAR(a.dato) = maxArt.year
and a.art='$currentart'
AND YEAR(a.dato)=$aarstal
and a.godkendt=1
and a.storfanger=1
ORDER BY maxvaegt DESC, a.laengde ASC
LIMIT 10;
Avatar billede arne_v Ekspert
17. maj 2021 - 15:06 #1
Det er ikke helt nemt at gennemskue.

Men måske noget a la:

AND a.vaegt = maxArt.maxVaegt

->

AND a.vaegt = maxArt.maxVaegt AND a.laengde = (SELECT MAX(laengde) FROM ... WHERE ...)
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