Kom ihåg mig?
Home Menu

Menu


MySQL count & inte räkna duplicates

Ämnesverktyg Visningsalternativ
Oläst 2011-10-15, 17:38 #1
Kimppas avatar
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2010
Inlägg: 793
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
Kimppas avatar
 
Reg.datum: Jul 2010
Inlägg: 793
Standard MySQL count & inte räkna duplicates

Hej,

Bygger ett litet röstningssystem.

Tabell:
ID | IP |

Försöker räkna ihop hur många gånger ID #1 finns i en tabell och gruppera
det via IP address så att inte dubbla röster visas. Får inte riktigt till mysql-
satsen. Det finns två stycken poster med ID #1, från samma IP och den visar
fortfarande siffra 2 i printen.

Någon som kan ge mig lite vägledning?

Citat:
$countquery = 'SELECT COUNT(*) FROM votes WHERE id = 1 GROUP BY ip';

$resultcount = mysql_query($countquery) or die('Sorry, we could not count the number of results: ' . mysql_error());

$numberofresults = mysql_result($resultcount, 0);

print $numberofresults;
Tack!
Kimppa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-15, 17:44 #2
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
SELECT COUNT(DISTINCT ip) FROM votes WHERE id=1
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-15, 17:48 #3
Kimppas avatar
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2010
Inlägg: 793
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
Kimppas avatar
 
Reg.datum: Jul 2010
Inlägg: 793
Tack så mycket Kekke!
Kimppa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-15, 20:27 #4
Kimppas avatar
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2010
Inlägg: 793
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
Kimppas avatar
 
Reg.datum: Jul 2010
Inlägg: 793
En till fråga. Trodde jag fått det att fungerat men den räknar inte mer än +1 och inte mindre än -1...

Citat:
$tuquery = 'SELECT EXISTS(SELECT COUNT(DISTINCT ip) FROM votes WHERE itemid = '.$id.' AND voteyes="1" GROUP BY ip)';
$turc = mysql_query($tuquery) or die('Sorry, we could not count the number of results: ' . mysql_error());
$howmany_yesvotes = mysql_result($turc, 0);

print $howmany_yesvotes;
Hur många som har röstat på Yes så förblir det ändå bara +1 istället för +2 om två har röstat från olika ip-adresser.
Kimppa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-15, 20:42 #5
Kimppas avatar
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2010
Inlägg: 793
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
Kimppas avatar
 
Reg.datum: Jul 2010
Inlägg: 793
Klurade ut det! Tack ändå!
Kimppa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-25, 21:17 #6
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
BjörnJ BjörnJ är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2009
Inlägg: 971
Annars kan man se till att samma IP inte kan finnas mer än en gång i databasen. Sätt UNIQUE eller PRIMARY på IP-kolumnen (eventuellt tillsammans med en annan kolumn). Om man vill kan man göra UPDATE i de fall IP-adressen redan finns i databasen.
BjörnJ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-25, 21:26 #7
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Citat:
Ursprungligen postat av BjörnJ Visa inlägg
Annars kan man se till att samma IP inte kan finnas mer än en gång i databasen. Sätt UNIQUE eller PRIMARY på IP-kolumnen (eventuellt tillsammans med en annan kolumn). Om man vill kan man göra UPDATE i de fall IP-adressen redan finns i databasen.
Har man möjlighet att rösta på flera olika 'poster' så funkar detta ej.
Men däremot kan man när man lägger in query'n, se till så att det bara finns 1 ip per unik post.
Kekke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-26, 07:52 #8
najks avatar
najk najk är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2005
Inlägg: 1 224
najk najk är inte uppkopplad
Har WN som tidsfördriv
najks avatar
 
Reg.datum: Oct 2005
Inlägg: 1 224
Citat:
Ursprungligen postat av Kekke Visa inlägg
Har man möjlighet att rösta på flera olika 'poster' så funkar detta ej.
Jo, det är klart det fungerar =) Gör precis som BjörnJ säger, lägg en UNIQUE på ip tillsammans med itemid.
najk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-26, 13:15 #9
Kimppas avatar
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jul 2010
Inlägg: 793
Kimppa Kimppa är inte uppkopplad
Mycket flitig postare
Kimppas avatar
 
Reg.datum: Jul 2010
Inlägg: 793
Hej!

Det var precis det jag gjorde istället! Hade en dum idé först och det var att låta besökaren
rösta på samma flera gånger men att bara 1 röst visas ändå. Så gjorde om det så att bara
det går att rösta om det inte redan finns en IP på den IDn.

Blev lättare så
Kimppa är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-26, 13:47 #10
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Kekke Kekke är inte uppkopplad
Medlem
 
Reg.datum: Feb 2011
Inlägg: 198
Citat:
Ursprungligen postat av najk Visa inlägg
Jo, det är klart det fungerar =) Gör precis som BjörnJ säger, lägg en UNIQUE på ip tillsammans med itemid.
Fel av mig :-)
Kekke är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:49.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017