[php/mysql] moeilijke query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hey ik heb een moeilijke query

ik heb twee tabellen:

berichten, met onder andere het veld schrijver
leden, met onder andere veld gebruikersnaam

Nu wil ik dat de leden gesorteerd worden op aantal geplaatste berichten. berichten.schrijver refereerd naar leden.gebruikersnaam.

Dus dat mensen kunnen zien wie de meeste berichten heeft gepost. Dus, wie de meeste resultaten heeft voor SELECT * FROM berichten WHERE schrijver = 'gebruikersnaam'

Hoe kan ik dit het beste aanpakken? Ik heb verschillende dingen geprobeert, maar het probleem is dat ik niet goed weet HOE ik het moet aanpakken.

Acties:
  • 0 Henk 'm!

Verwijderd


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

kijk eens naar MAX(COUNT()) en GROUP BY

of sorteer ze gewoon op COUNT(berichten) en neem de hoogste(n).

Onder de GROUP BY kom je in ieder geval niet uit :)

Om slindenau aan te vullen dan :P

http://www.w3schools.com/sql/sql_groupby.asp

Want ook de join hebbie nodig uiteraard.

[ Voor 51% gewijzigd door Bosmonster op 03-07-2003 14:21 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je wilt dus per gebruiker tellen hoeveel berichten ie had in 1 query, gesorteerd op het aantal?

Nou, dat per gebruiker regel je dmv group by, dat tellen met count en dat sorteren met order by en in mysql is het makkelijkste om de 'hoogste' te bepalen dmv limit

[ Voor 16% gewijzigd door ACM op 03-07-2003 14:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

nevermind spuit elf
kwas weer te laat :/

[ Voor 92% gewijzigd door Verwijderd op 03-07-2003 14:22 ]


Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 12-09 20:19

Sosabowski

nerd

De makkelijke manier is om een kolom aantal_berichten toe te voegen aan de tabel leden. Deze te update en vervolgens SELECT * FROM leden ORDER BY aantal_berichten. Misschien niet de mooist mannier. Maar als iemand een bericht plaatst en je update aantal_brichten gelijk is het goed te doen.

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

IorGie schreef op 03 juli 2003 @ 14:22:
De makkelijke manier is om een kolom aantal_berichten toe te voegen aan de tabel leden.
Bij mysql kan je totaal niet garanderen dat dit aantal klopt tov de werkelijkheid, lijkt me daarom niet raadzaam dat zomaar als "beste oplossing" te beschouwen.
Het is wel de snelste, als je er handig gebruik van maakt. Maar of die snelheid ook echt relevant is?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

IorGie schreef op 03 July 2003 @ 14:22:
De makkelijke manier is om een kolom aantal_berichten toe te voegen aan de tabel leden. Deze te update en vervolgens SELECT * FROM leden ORDER BY aantal_berichten. Misschien niet de mooist mannier. Maar als iemand een bericht plaatst en je update aantal_brichten gelijk is het goed te doen.
Dat zou ik alleen aanraden als je het aantal_berichten extreem vaak gebruikt en het je database query dus behoorlijk kan versimpelen.

Is het simpelweg voor een overzicht ergens, dan zou ik dit niet doen, aangezien je data dus dubbel aan het opslaan bent.

Acties:
  • 0 Henk 'm!

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

IorGie schreef op 03 juli 2003 @ 14:22:
De makkelijke manier is om een kolom aantal_berichten toe te voegen aan de tabel leden. Deze te update en vervolgens SELECT * FROM leden ORDER BY aantal_berichten. Misschien niet de mooist mannier. Maar als iemand een bericht plaatst en je update aantal_brichten gelijk is het goed te doen.
En op die manier lekker redendante gegevens bewaren en onnodig databaseverkeer genereren? Dat lijk me niet de verstandigste oplossing. :/

Het is misschien wel de makkelijskte, maar zeker niet de beste. Zie vorige posts voor de juiste oplossing.

My personal website


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb dat script maar 1 keer nodig, op een statestieken pagina. Ook over dat systeem heb ik gedacht, maar ik kwam al snel in de war. (Berichten kunnen verwijderd worden, enz, dan klopt dat aantal al snel niet meer)

EDIT: bedankt het lukt denk ik al!

[ Voor 9% gewijzigd door Verwijderd op 03-07-2003 14:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 03 July 2003 @ 14:39:
Ik heb dat script maar 1 keer nodig, op een statestieken pagina. Ook over dat systeem heb ik gedacht, maar ik kwam al snel in de war. (Berichten kunnen verwijderd worden, enz, dan klopt dat aantal al snel niet meer)

EDIT: bedankt het lukt denk ik al!
Als een bericht verwijderd is bestaat het ID toch niet meer, dus gaat er automatisch een post af voor die user...? Lijkt me niet zo ingewikkeld.

(als je met count() en join's werkt bedoel ik dan)

[ Voor 6% gewijzigd door Verwijderd op 03-07-2003 14:46 ]

Pagina: 1