MizzKMedlem sedan juni 2003410 inlägg För några dagar sedan fick jag hjälp med en top 5 sats som skulle räkna ut top 5 och den fungerade trodde jag, men nu ser jag att den räknar ut top 5 på vissa ställen och top 6 på vissa, någon som har förslag hur detta ska fixas för att de ska bli korrekt?
Sql satsen:
SELECT u.hundnr, h.hundnamn, h.kon, Sum(u.poang) AS top5, (select sum(utr.poang)
from utst_resultat utr where utr.hundnr = u.hundnr) AS total, (select Count(aus.utstnr)
from utst_resultat aus where aus.hundnr = u.hundnr) AS antal
FROM utst_resultat AS u INNER JOIN hund AS h ON u.hundnr = h.hundnr
WHERE (((u.poang) In (select top 5 ur.poang
from utst_resultat ur where(ur.hundnr = u.hundnr)
order by ur.poang desc))) GROUP BY u.hundnr, h.hundnamn, h.kon
HAVING(((h.kon) = 't')) ORDER BY Sum(u.poang) DESC;
gamla tråden:
http://www.webforum.nu/showthread.php?t=151243
emissionMedlem sedan dec. 19996 721 inlägg Det ska inte vara
u.poang) In (select top 5 ur.poang
utan
u.utstnr) In (select top 5 ur.utstnr
Förutsatt att det är "utstnr" som identifierar den specifika utställningen
MizzKMedlem sedan juni 2003410 inlägg De gav samma resultat.. ingen skillnad i listan
om de var såhär du menade
SELECT u.hundnr, h.hundnamn, h.kon, Sum(u.poang) AS top5, (select sum(utr.poang)
from utst_resultat utr where utr.hundnr = u.hundnr) AS total, (select Count(aus.utstnr)
from utst_resultat aus where aus.hundnr = u.hundnr) AS antal
FROM utst_resultat AS u INNER JOIN hund AS h ON u.hundnr = h.hundnr
WHERE (((u.utstnr) In (select top 5 ur.utstnr
from utst_resultat ur where(ur.hundnr = u.hundnr)
order by ur.poang desc))) GROUP BY u.hundnr, h.hundnamn, h.kon
HAVING(((h.kon) = 'h')) ORDER BY Sum(u.poang) DESC;
MizzKMedlem sedan juni 2003410 inlägg kan de ha ngt med att vissa resultat kan vara identiska och i de fallen ska den endast välja en av dem? Eller så många av dem som behövs.. dvs den ska alltid välja de 5 högsta värdena!
emissionMedlem sedan dec. 19996 721 inlägg Det var just det som min förändring skulle åstadkomma. I den ursprungliga SQL-satsen räknades t.ex. 10,10,10,6,5,3,2 som de fem högsta.
Renskriven
SELECT u.hundnr,
h.hundnamn,
h.kon,
Sum(u.poang) AS top5, (SELECT sum(utr.poang) FROM utst_resultat utr WHERE utr.hundnr = u.hundnr) AS total, (SELECT Count(aus.utstnr) FROM utst_resultat aus WHERE aus.hundnr = u.hundnr) AS antal
FROM utst_resultat AS u
INNER JOIN hund AS h
ON u.hundnr = h.hundnr
WHERE u.utstnr In
(SELECT top 5 ur.utstnr
FROM utst_resultat ur
WHERE ur.hundnr = u.hundnr
ORDER BY ur.poang desc
)
AND h.kon='t'
GROUP BY u.hundnr,
h.hundnamn,
h.kon
ORDER BY Sum(u.poang) DESC
MizzKMedlem sedan juni 2003410 inlägg får med din kod samma resultat som innan, ingen skillnad =(
MizzKMedlem sedan juni 2003410 inlägg både utställning 3 och 6 ex kan mna få samma poäng på..
när jag bara väljer top 5 satsen skriver den ut ex så här
här finns totalt bara 6 resultat
utstnr-poang
31-30p
3-26p
11-20p
9-20p
1-15p
8-15p
ett annat exempel med 10 resultat
8-52
17-43
18-20
11-20
31-15
30-15
27-15
emissionMedlem sedan dec. 19996 721 inlägg ???
Menar du att du får ut 6 resp. 7 resultat när du kör top 5-satsen??
MS SQL, Access?
MizzKMedlem sedan juni 2003410 inlägg jepp verkar så, men i första fallet här fanns de totalt 6 resultat men skrev ut 6 samt i den andra fallet fanns total 10 resultat och skrev ut 7..
konstigt va ;)
acess databas!
emissionMedlem sedan dec. 19996 721 inlägg Det råkar inte vara så att du använder någon tokig datatyp, såsom Memo?
@ndersMedlem sedan juni 200032 969 inlägg
kan de ha ngt med att vissa resultat kan vara identiska och i de fallen ska den endast välja en av dem? Eller så många av dem som behövs.. dvs den ska alltid välja de 5 högsta värdena!
Brukar lösas genom att (i den delfråga som innehåller TOP) lägga till ett sekundärt sorteringsfält, som alltid är unikt (exempelvis ett räknar-id.).
MizzKMedlem sedan juni 2003410 inlägg hur menar du? visa gärna me kod
@ndersMedlem sedan juni 200032 969 inlägg .....
SELECT top 5 ur.utstnr
FROM utst_resultat ur
WHERE ur.hundnr = u.hundnr
ORDER BY ur.poang desc[b], något_till_fält_från_utst_resultat_att_sortera_på_exempelvis_en_räknare[/b]
.....
emissionMedlem sedan dec. 19996 721 inlägg Det var som sjutton. Sickna fasoner av Access....
MizzKMedlem sedan juni 2003410 inlägg ja verkligen, men de fungerade nu.. =D
tack för hjälpen alla =D
@ndersMedlem sedan juni 200032 969 inlägg Ja, Access beter sig lite underligt ibland (TOP är en av dessa underligheter), och det är bara att lära sig. :)
(Jag noterar också att jag för en gångs skull kan något som inte emission kan! (y))
emissionMedlem sedan dec. 19996 721 inlägg
@nders skrev:
(Jag noterar också att jag för en gångs skull kan något som inte emission kan! (y))
Inte konstigt att jag sov dåligt.... ;)