Avatar billede floetti Nybegynder
13. januar 2005 - 23:55 Der er 16 kommentarer og
1 løsning

Hente seneste ud af flere med samme brugerid fra databasen!

Hej...

Nu er jeg simpelten gået i stå! Jeg vil gerne have hivet den hivet en kolonne ud fra en databasen. Tabellen er sådan at der lægges værdier i med samme "brugerid" og "proid", men forskellige "amount", altså:

r. brugerid:  proid:  amount:
1  123123    1      240 <- det skal vises
2  123123    2      100 <- det skal ikke vises, fordi r. 3 har                højere værdi i "amount"!
3  123123    2      200 <- det skal vises

Så vil jeg lavet det sådan at man skal kunne hente alle værdier med sin "brugerid", men dele dem op efter "proid" og såkun den kolonne med højeste værdi.

Mit problem er at alle værdierne kommer frem...

Håber det til at forstå...

//floetti
Avatar billede hmortensen Nybegynder
13. januar 2005 - 23:59 #1
Det må blive noget i den her retning:

SELECT brugerid, proid, amount FROM tabel GROUP BY proid ORDER BY amount DESC
Avatar billede floetti Nybegynder
14. januar 2005 - 00:06 #2
hvordan er det så med bruger id om der er flere??

foreksempel:
En har brugerid = 123123 og har de overstående værdier i tabellen, og så har en anden bruger med brugerid = 123456, lagt det samme i databasen, men nu skal 123123 kun kunne se sine kolonner med sin brugerværdi i... og ikke dem med brugerid = 123456...
Avatar billede moocher Nybegynder
14. januar 2005 - 00:06 #3
Lidt mere om dit system

1  123123    1      240 <- det skal vises
2  123123    2      100 <- det skal ikke vises
3  123123    2      200 <- det skal vises
4  123123    1      200 <- det skal ikke vises
5  123123    3      300 <- det skal vises
6  123123    2      120 <- det skal ikke vises
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:09 #4
Så sæt en WHERE betingelse på.

WHERE brugerid = 123123
Avatar billede floetti Nybegynder
14. januar 2005 - 00:15 #5
Sådan her:?

SELECT brugerid, proid, amount FROM tabel GROUP BY proid WHERE brugerid = 123123 ORDER BY amount DESC
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:20 #6
Sådan her skulle det gerne være:
SELECT brugerid, proid, amount FROM tabel WHERE brugerid = 123123 GROUP BY proid ORDER BY amount DESC
Avatar billede floetti Nybegynder
14. januar 2005 - 00:31 #7
Ok... nu ser det ud til at virke næsten helt ret. Det som det nu gør er at siden henter kun den ene kolonne (ikke som før alle hvør brugerid var), men ikke den med højeste værdi i, men den med det laveste... Nu deler den alle resultaterne ud fra alle outputs.
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:38 #8
Undskyld mig, men din sidste besked forstod jeg intet af.
Avatar billede floetti Nybegynder
14. januar 2005 - 00:45 #9
hehe... ok, synes også den er lidt underlig;)

Men det som sker, er at nu kommer det korrekt ud, men det er den med lavest værdi i "amount" som bliver vidst istedet for den med højest...

Som her:
r. brugerid: proid:  amount:
1  123123    1      240 <- Vises, korrekt da der kun er en række med dette "proid"
2  123123    2      100 <- vises
3  123123    2      200 <- vises ikk

Som du ser, bliver den med proid = 2, vidst med den lavest id, ikke den højeste som var meningen...

Håber dette var bedre
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:47 #10
Tjek lige om du har "ORDER BY amount DESC" til sidst i din sætning. DESC er den som sortere faldende
Avatar billede floetti Nybegynder
14. januar 2005 - 00:56 #11
jo... det er nemlig det som er mærkeligt, det er det som jeg prøvede at dumpede i forklare lige før.

Istedet for at sortere efter "amount" for hver "proid", så sorterer siden "amount" efter hver "brugerid", altså:

r. brugerid: proid:  amount:
1  123123    1      240 <- vises, og kommer først frem da amount er højest her, end på de andre med samme brugerid (123123)
2  123123    2      100 <- vises ikk
3  123123    2      200 <- vises, da dette er højeste værdi af "proid", men bliver sorteret som nr. 2 fordi den har næst højeste værdi med brugerid = 123123

Om jeg så sletter DESC, så bliver det bare den anden vej...
Avatar billede hmortensen Nybegynder
14. januar 2005 - 00:59 #12
Det her er da rigtigt:
r. brugerid: proid:  amount:
1  123123    1      240 <- vises
2  123123    2      100 <- vises ikk
3  123123    2      200 <- vises

Er det fordi du vil ha r3 før r1 ?
Avatar billede floetti Nybegynder
14. januar 2005 - 01:11 #13
ikke helt... jeg vil have vidst begge r1 og r3, men jeg skal have højest værdi (amount) ud for hver "proid"... derfor skal r2 ikke vises!

om vi siger at proid(1) = Hus og proid(2) = Bil, så vil siden i kort se sådan ud:

Dette har du valgt at lægge på listen, og prisen er nu:

Hus, 240 kr
Bil, 200 kr

det skal være en slags "favorit" liste, hvor man kan holde øje med prisen...
Avatar billede hmortensen Nybegynder
14. januar 2005 - 01:13 #14
Du skriver jo også at det kun er r1 og r3 der vises. Jeg kan ikke se dit problem.
Avatar billede floetti Nybegynder
14. januar 2005 - 01:19 #15
hmm.... undskyld mine forklaringer:/

Lige engang til, så skal du slippe;)

Problemet er at det er den laveste værdi der bliver vidst for hver "proid" istedet for den højeste... Altså: 100 istedet for 200 i prodi(2).

Det er faktisk det som sker.
Avatar billede floetti Nybegynder
14. januar 2005 - 01:57 #16
det som jeg skriver er det som skal ske men det nemlig ikke hvad sker...
Avatar billede floetti Nybegynder
29. december 2005 - 14:23 #17
alvorlig lukke tid ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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