06. juli 2003 - 13:41Der er
17 kommentarer og 1 løsning
Spørgsmål vedr. sortering.
Hej.
Jeg ved ikke helt hvordan jeg skal forklare mit problem men jeg prøver.
Jeg har to tabeller i min database. I den ene der nogle medlemmer, og i den anden oplysninger om disse.
I hver tabel med oplydninger er der 3-4 poster pr person. Der er et felt i hver post som hedder total som er et tal-felt.
Det jeg gerne vil have er at når jeg skal liste personerne, skal den sortere efter den person der har det højeste totalt sammenlagt. Man skal altså ligge de 3-4 total sammen, og sortere efter dem.
SELECT Sum(xx.total) AS SumOftotal, medlemmer.id, medlemmer.navn FROM medlemmer LEFT JOIN xx ON medlemmer.id = xx.id GROUP BY medlemmer.id, medlemmer.navn ORDER BY Sum(xx.total) DESC
Et lille eks hvis du har medlemmer tabel og xx tabellen
medlemmer: ID navn 1 A 2 B
xx aID ID total 1 1 10 2 1 10 3 1 5 4 2 9 5 2 8 6 1 7
Så kan man JOIN'ne de to tabeller samme hvor de har nogeet til fælles, det er så ID som i xx tabellen gør man ved hvilken record i medlemmer tabellen den høre til. Så tabelle efter JOING ser sådan her ud:
medlemmer|xx ID navn ID total 1 A 1 10 1 A 1 10 1 A 1 5 1 A 1 7 2 B 2 9 2 B 2 8
Men den skal lave en Sum(total) og der er indsat GROUP BY (id,navn) så den gruppere alle som har nogle ens felter samme her ID og navn, så summeres total hvor id'er ens så der bliver en sum hvor hver person, så man til sidst har dette tilbage og det som man får i recordsetet
SELECT Sum(xx.total) AS SumOftotal, medlemmer.id, medlemmer.navn, medlemmer.HHH, medlemmer.YYY FROM medlemmer LEFT JOIN xx ON medlemmer.id = xx.id GROUP BY medlemmer.id, medlemmer.navn, medlemmer.HHH, medlemmer.YYY ORDER BY Sum(xx.total) DESC
Passer summen med den bruger som bliver vist eller er det summe af alle brugeres total??? Umiddelbart lyder det som om enten der kun er en bruger eller hvordan udskriver du det, i et do while not rs.EOF looo?
Nej det er jo pinligt - jeg havde totalt glemt at loope den igennem :-) Sorry
Jeg vil gerne udskrive summen, men hvordan gør jeg det?
Hvis jeg forhøjre til 200 point, er så frisk på følgende:
Jeg skal på en anden side gøre det samme, her må den bare ikke vise de poster hvor feltet 'mm' og 'km' er = JA. mm og km ligger i medlems-tabellen.
På den første side, kan jeg godt komme ud for at der er flere som får samme sum, kan jeg så bare gøre sådan: ORDER BY Sum(xx.total), medlemmer.felt2, medlemmer.felt3 DESC, eller hvordan gør man det?
Du kan tilføje en WHERE på som tjekker på mm og km
SELECT Sum(xx.total) AS SumOftotal, medlemmer.id, medlemmer.navn, medlemmer.HHH, medlemmer.YYY FROM medlemmer LEFT JOIN xx ON medlemmer.id = xx.id WHERE medlemmer.mm <> 'ja' AND medlemmer.km <> 'ja' GROUP BY medlemmer.id, medlemmer.navn, medlemmer.HHH, medlemmer.YYY ORDER BY Sum(xx.total) DESC
nå okay - jeg havde prøvet <%= sumoftotal %> - men det er bare rs jeg mangler.
Jeg takker endnu engang.
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.