Top 3

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maestro Roboroads

Maestro Roboroads

20/09/2011 15:50:31
Quote Anchor link
Hallo allemaal,

Ik heb een script dat mensen een idee kunnen insturen, waarna andere mensen op dat idee kunnen stemmen.


De tabel ziet er als volgt uit:
id / naam / idee_id / stem

idee_id is het id van een rij in een ander tabel (zo zijn ze dus gelinkt).
Als stem 0 is, is er Nee gestemd, en als hij 1 is, is er ja gestemd.

Nu mijn vraag:
Ik wil een top 3 hebben van de ideeën die de meeste compensatiepunten heeft (het aantal ja-stemmen minus het aantal nee-stemmen) maar heb dus echt geen flauw idee hoe de Query eruit moet zien.

Ik wil de 3 idee_id's met de hoogste compenstatiepunten als output hebben.

Iemand een idee hoe de query er dan uit moet zien?

Alvast bedankt!
Gewijzigd op 20/09/2011 15:51:22 door Maestro Roboroads
 
PHP hulp

PHP hulp

16/05/2021 11:13:09
 
Aad B

Aad B

20/09/2011 16:36:49
Quote Anchor link
Grofweg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
select naam, count(*)
from tabel
where stem = 1
minus
select naam, count(*)
from tabel
where stem = 0
group by naam

en dan nog begrenzen op 3, iets met limit 3?
Gewijzigd op 20/09/2011 16:39:35 door Aad B
 
Maestro Roboroads

Maestro Roboroads

20/09/2011 16:43:37
Quote Anchor link
Ja, die haalt niet heel veel uit:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MINUS (SELECT count(*) FROM ghm_stemmen WHERE stem = '0') GROUP BY idee_id' at line 1

mysql_query("SELECT count(*) FROM ghm_stemmen WHERE stem = '1' MINUS SELECT count(*) FROM ghm_stemmen WHERE stem = '0' GROUP BY idee_id")or die(mysql_error());


EDIT: Oh, je edit nog niet gezien, ff kijken


EDIT 2:
Nope!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'minus select idee_id, count(*) from ghm_stemmen where stem = '0' group by idee_i' at line 4

mysql_query("select idee_id, count(*)
from ghm_stemmen
where stem = '1'
minus
select idee_id, count(*)
from ghm_stemmen
where stem = '0'
group by idee_id")or die(mysql_error());
Gewijzigd op 20/09/2011 16:46:35 door Maestro Roboroads
 
Jacco Brandt

Jacco Brandt

20/09/2011 18:39:12
Quote Anchor link
Dat zijn 2 aparte queries :D
Probeer eens zoiets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    `idee`.`naam`,
    (SELECT COUNT(*) FROM `stemmen` WHERE `stemmen`.`stem`='1' AND `stemmen`.`idee_id`=`idee`.`id`) AS `positief`,
    (SELECT COUNT(*) FROM `stemmen` WHERE `stemmen`.`stem`='0' AND `stemmen`.`idee_id`=`idee`.`id`) AS `negatief`,
    `positief` - `negatief` AS `totaal`
FROM `idee`
ORDER BY `idee`.`totaal` DESC
LIMIT 3


Note: niet getest, je zult er misschien wat aan moeten sleutelen
Gewijzigd op 20/09/2011 18:44:40 door Jacco Brandt
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.