29. maj 2008 - 19:07Der er
23 kommentarer og 2 løsninger
Udvælg laveste i gruppe
Hejsa.
Jeg skal bruge en forespørgsel, som udtrækker laveste værdi i feltet "Score" i hver kategori, som står i feltet "MatchID". Altså den skal dele alle "MatchID" op og vælge den post hvor "Score" er lavest.
Jamen jeg skal have den laveste i HVER gruppe. Altså hvis der er 5 forskellige "MatchID" skal den returnere 5 poster, og det skal være de 5 poster hvor "Score" er lavest. Der kan nemlig være flere af den samme i "MacthID"
Nu bruger jeg ikke normalt en UNION, men nogenlunde således:
SELECT top 1, sport,matchid FROM tabel1 WHERE sport= 'fodbold' order by matchid asc UNION SELECT top 1, sport,matchid FROM tabel1 WHERE sport= 'håndbold' order by matchid asc UNION SELECT top 1, sport,matchid FROM tabel1 WHERE sport= 'tennis' ORDER BY matchid asc;
jensen - Du må sgu meget undskylde, men den kan jeg ikke få til at fungere. Denne er afprøvet og så vidt jeg kan se, giver den svaret. Feltet sport angiver hvilken sportsgran der er tale om.
SELECT Min(Tabel1.score) AS MinOfScore, Tabel1.sport FROM Tabel1 GROUP BY Tabel1.sport;
Der må helst ikke være definieret hvad der skal stå i felterne. Bare en funktion til at tage den post ud i hver kategori, hvor Score er lavest
Synes godt om
Slettet bruger
31. maj 2008 - 23:22#17
Det er resten af din forespørgsel, som der skal kigges på... Der er et eller flere felter, som du måske ikke engang viser, som er forskellige selvom MatchID er ens. Disse felter skal ikke være med i GROUP BY, hvis det eksempelvis er datoer, så kan du måske bruge WHERE ellers prøv at få disse felter ud af forespørgslen. Du kan også prøve at gå i egenskaber og sætte UnikkeVærdier til Ja!~)
Hvis du ikke kan få det til at spille, så er du velkommen til at sende din db til spg.eksperten@gmail.com
Min(Score) is going to give the smallest value for a group. So if there is always distinct matchID in the result then min will work, but because there are other fields in the group its unlikley that this will be the case. So you have to make a sub select to get the Min(score) for the specific MatchID.
...SELECT min([G01]) FROM tblDisciplineFinal T Where T.MatchID = tblDisciplineFinal.MatchID) AS MinGD ...
THis is what I have now suggested, no idea if its what Lars wants.
Make a query which only contains two columns, MatchID and G01. Group on MatchID and take the smallest (Min) G01. This query should give you the lowest G01 for each matched.
Now make another query where you have the first query and also the table tblDisciplineFinal. Make a join between the query and the table on MatchID and G01.
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.