Selecteer Maximum Count

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jens Ja

Jens Ja

25/07/2015 01:36:23
Quote Anchor link
Goedenavond,

Ik heb een klein probleem met mySQL. Ik heb een database met een 2 tabellen. 1 tabel is 'stories' met 2 velden. Namelijk id en content. de volgende tabel is genaamd likes met ook 2 velden genaamd id en story_id. Story id gelinkt aan de id van de story zelf.

Ik wil de story selecteren die de meeste likes heeft. Ik pieker hier nu al een tijdje over en kom er maar niet uit. Ik had zelf de volgende aanpak in gedachten. Tel alle likes bij elkaar op van elke story en pak daar de hoogste van. Maar al mijn queries zijn tot nu toe gefaald. Ik hoop dat jullie me een beetje op weg kunnen helpen.

Alvast bedankt.
 
PHP hulp

PHP hulp

18/04/2024 10:07:56
 
Richard Hansma

Richard Hansma

25/07/2015 02:05:13
Quote Anchor link
Ik zou een ORDER BY in combinatie met een COUNT aanraden en vervolgens een LIMIT 0,1.
 
Jan de Laet

Jan de Laet

25/07/2015 09:07:53
Quote Anchor link
Met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT likes.story_id, COUNT(*) AS countlikes
FROM likes
GROUP BY id
ORDER BY COUNT(*) DESC
LIMIT 1

krijg je de id uit likes met hoogste count

Je kunt dan likes.story_id gebruiken om de story op te halen.

Je kunt het ook in 1 sql doen, door de vorige sql als subselect te gebruiken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT stories.*
FROM stories, (SELECT likes.story_id, COUNT(*) AS countlikes
               FROM likes
               GROUP BY id
               ORDER BY COUNT(*) DESC
               LIMIT 1) AS hc
WHERE hc.story_id = stories.id
 
Jens Ja

Jens Ja

25/07/2015 13:20:55
Quote Anchor link
Bedankt voor de reacties allebei. Helaas werkt deze query niet. Als ik even de Limit 1 en DESC weg haal krijg ik dit te zien.

Story_id | Likes |
23 | 1 |
21 | 1 |
21 | 1 |
21 | 1 |

En als ik de query volledig run van Jan krijg ik dit:

id | content
23 | test story
 
Jan de Laet

Jan de Laet

25/07/2015 13:27:50
Quote Anchor link
Sorry, mijn fout.
Moet natuurlijk dit zijn (had het uit hoofd ingetikt en niet getest):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT likes.story_id, COUNT(*) AS countlikes
FROM likes
GROUP BY story_id
ORDER BY COUNT(*) DESC
LIMIT 1


en

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT stories.*
FROM stories, (SELECT likes.story_id, COUNT(*) AS countlikes
               FROM likes
               GROUP BY story_id
               ORDER BY COUNT(*) DESC
               LIMIT 1) AS hc
WHERE hc.story_id = stories.id
 



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.