Avatar billede purup Nybegynder
28. marts 2006 - 01:43 Der er 9 kommentarer og
1 løsning

problem med query der bruger 2 tabeller

Jeg har 2 tabeller: $votes og $users
$users indeholder bl.a. userId, username, lastLogin
$votes indeholder bl.a. voteOn, vote, voteFrom

Brugerne skal stemme på hinanden. Nå en bruger har stem indsættes stemmen i $votes
(voteOn = brugeren(userId) der bliver stemt på og voteFrom = brugeren(userId) der stemte)

Nå en bruger har stemt skal der komme en ny bruger han kan stemme på. En bruger må ikke kunne stemme på den samme bruger flere gange - (ikke før brugeren har stemt på samtlige brugere)

Den stemmende brugers id er $myId

Det jeg gerne vil have er et query der:
bruger tabellen $votes til at se hvor mange gange $myId har stemt på forskellige brugere, og derefter lister i $user ud fra hvor mange $myId har stemt på dem (og derefter hvornår de sidst har været logget ind)

Kan det lade sig gøre?
Avatar billede purup Nybegynder
28. marts 2006 - 01:45 #1
...lister brugerne i $users....
Avatar billede eagleeye Praktikant
28. marts 2006 - 08:15 #2
Antal gange man ($myId) har stemt:

sql = "select count(voteFrom) from votes where voteFrom = '".$myId."';";


Er det du spørger om er en top liste?

sql = "select count(votesTo) as antalStemmer, users.username, users.lastLogin from users inner join votes on users.userId = votes.votesTo group by users.userId order by antalStemmer desc, lastLogin desc";
Avatar billede purup Nybegynder
28. marts 2006 - 11:27 #3
Det var nok en lidt kludret forklaring. De query virker fint, men det er ikke det jeg gerne vil. Jeg vil gerne have samtlige userId ud men sorteret efter: 1 antal gange myId har stemt på dem, 2 hvornår de sidst har været logget ind.
Avatar billede eagleeye Praktikant
28. marts 2006 - 12:46 #4
Ok, så hvis en bruger har stemt flere gange er det så X antal poster i votes hvor X er lig med det antal gange han har stemt eller har du en counter på voten imellem de to?
Avatar billede eagleeye Praktikant
28. marts 2006 - 12:50 #5
Hvis hver stemme er en unik post i votes så må det blive noget som dette:

sql = "select count(votesFrom) as antalStemmer, users.username from users inner join votes on users.userId = votess.voteTo where votes.votesFrom = '".$myId."' group by users.userId order by antalStemmer desc, lastLogin desc";
Avatar billede purup Nybegynder
28. marts 2006 - 14:21 #6
stemmerne i $votes er ikke unikke!

et eksempel - lad os sige at
$users(id, username, lastLogin) indeholder:
1, mads, 20060301
2, jakob, 20060302
3, peter, 20060303
4, brian, 20060304

..og $votes(voteOn, vote, voteFrom) indeholder:
1, 999, 3 (bruger 3 har stemt 999 på bruger 1)
1, 999, 2 (bruger 2 har...)
2, 999, 3
1, 999, 3

jeg er logget ind som $myId = 3 (peter)

Så skulle jeg gerne få følgende ud (i denne rækkefølge):
3 (jeg har ikke stemt på 3, og 3 har været logget ind senere end 4
4 (jeg har ikke stemt på 4
2 (jeg har stemt én gang på 2
1 (jeg har stemt to gange på 1 og derfor kommer 1 tilsidst)

(egentlig burde 3 ikke være på listen efter som det er mig selv)
Avatar billede eagleeye Praktikant
28. marts 2006 - 15:21 #7
Ok så må det blive sådan her hvor de to joines på userId og voteTo og stadig med en where på votesFrom = $myid:

sql = "select votes.vote, users.username from users inner join votes on users.userId = votes.voteTo where votes.votesFrom = '".$myId."' order by vote desc, lastLogin desc";
Avatar billede eagleeye Praktikant
28. marts 2006 - 15:22 #8
hov der nogle et s for meget i votesFrom:

sql = "select votes.vote, users.username from users inner join votes on users.userId = votes.voteTo where votes.voteFrom = '".$myId."' order by vote desc, lastLogin desc";
Avatar billede purup Nybegynder
24. april 2006 - 17:02 #9
tak for hjælpen - havde helt glemt spørgsmålet at lukke spørgsmålet.
Smid et svar så du kan få dine point.
Avatar billede eagleeye Praktikant
24. april 2006 - 17:56 #10
Ja her er et svar :)
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