[mysql] Bij gebruik "Group by" sorteert hij niet goed?

Pagina: 1
Acties:

  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 17-08 16:09
Het kan dat het aan mij ligt..
Maar als ik group by doe, dan sorteert hij niet naar wens..
Tenzij het zo is dat ik group by niet goed begrijp..

Het idee is iig om uit een database (met de cellen id, cid, cat, date) op te halen maar dat cid dan maar 1x in die vorm mag voorkomen.
Daarbij moet dan date (in unix timestamp) de nieuwste bovenaanstaan..
Ik gebruik order by 'date' om te sorteren..

code:
1
2
query:
SELECT * FROM messages WHERE cid= '$cid' GROUP BY cat ORDER BY 'date' DESC


Maar het vreemde is, hij pakt niet de nieuwste maar hij pakt gewoon ergens in het midden er eentje :/

Wat doe ik fout, of begrijp ik fout?

[ Voor 20% gewijzigd door Bender op 26-05-2003 21:15 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Gebruik je ook een order by?
Wat is je query?

Who is John Galt?


  • Stewie!
  • Registratie: September 2001
  • Laatst online: 08:19

Stewie!

Keen must die!

Order by?


Strava: https://www.strava.com/athletes/149347154


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Post je query eens.

Je moet alleszins grouperen op alle velden in je select die geen aggregated function zijn. Als je geen aggr. functions gebruikt, dan heb je ook geen group by nodig.

Sorteren doe je btw ook niet dmv een group by , maar mbhv een ORDER BY

[ Voor 17% gewijzigd door whoami op 26-05-2003 21:13 ]

https://fgheysels.github.io/


  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 17-08 16:09
Excuses, ik gebruik order by 'date' :)

Verwijderd

gebruik alleen een goup by als je totalen van je groepen wilt hebben
anders pak je distinct kolomnaam

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Triloxigen schreef op 26 May 2003 @ 21:12:
Excuses, ik gebruik order by 'date' :)
Daar kunnen we je echt goed mee helpen. :/

Zolang je je volledige query niet post, is het onmogelijk om te zien wat er goed of fout aan is, en kunnen we enkel gissen. Glazen bollen zijn nl. al lang uitverkocht.

https://fgheysels.github.io/


  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 17-08 16:09
Verwijderd schreef op 26 mei 2003 @ 21:13:
gebruik alleen een goup by als je totalen van je groepen wilt hebben
anders pak je distinct kolomnaam
Disticnt had eerder iemand het ook al over, maar dat lukt me al helemala niet :/
Weet niet precies hoe ik het moet gebruiken en kan gene bruikbare voorbeelden vinden..

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Verwijderd schreef op 26 May 2003 @ 21:13:
gebruik alleen een goup by als je totalen van je groepen wilt hebben
anders pak je distinct kolomnaam
Een distinct werkt op de gehele row. Je kunt dus geen distinct toepassen op enkele kolommen binnen je select-clause alleen.

Verder heb je wel gelijk dat je enkel een group by mag gebruiken als je aggr. functions gebruikt zoals max(), sum(), count(), avg(). (Dus niet alleen totalen) :Y)

https://fgheysels.github.io/


  • LAN
  • Registratie: Oktober 2000
  • Niet online

LAN

edit:


beter lezen /:

[ Voor 84% gewijzigd door LAN op 26-05-2003 21:16 ]


Verwijderd

Triloxigen schreef op 26 May 2003 @ 21:14:
[...]


Disticnt had eerder iemand het ook al over, maar dat lukt me al helemala niet :/
Weet niet precies hoe ik het moet gebruiken en kan gene bruikbare voorbeelden vinden..
A. post je query
B. Distinct gebruik je in je select:

Select Distinct ID From bla where bla = bla

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Triloxigen, ik zie maar 1 oplossing voor jou:

sql tutorial

Aangezien je het blijkbaar vertikt om de query hier te posten, en je blijkbaar ook enkele dingen die je niet snapt niet echt wilt gaan opzoeken of uitzoeken, doe ik het topic maar dicht.

Zoals ik eerder al zei, verzand dit topic in niets anders dan gissingen. Daar kunnen we ook niet veel mee.

https://fgheysels.github.io/


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Even over het hoofd gezien dat de query in de beginpost ge-edit is. Sorry ;)
Toch zou ik de TS nog wel willen adviseren actiever te zoeken en proberen :) Als je een suggestie niet direct snapt, zoek dan eerst even en ga dan pas weer vragen :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Aangezien je geen gebruik maakt van aggregaat-functies, mag je ook geen group by gebruiken in je query.
Date is ook een reserved word, als je een columname hebt die date heet, zul je er backticks moeten rond zetten.

https://fgheysels.github.io/


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Triloxigen schreef op 26 May 2003 @ 21:10:
Ik gebruik order by 'date' om te sorteren..
Maar je sorteert dan ook niet op het datum veld, maar op het tekstje "date" en die is voor elk record hetzelfde (je plakt het er zelf achter) en daarmee is je sortering alsnog niet gegarandeerd...
whoami schreef op 27 May 2003 @ 09:43:
Aangezien je geen gebruik maakt van aggregaat-functies, mag je ook geen group by gebruiken in je query.
In mysql mag zoiets wel geloof ik :X

[ Voor 9% gewijzigd door ACM op 27-05-2003 12:01 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
ACM schreef op 27 May 2003 @ 12:00:
[...]

In mysql mag zoiets wel geloof ik :X
En garandeerd mysql dan ook goede resultaten?

Trouwens, normaal gezien kan je toch enkel sorteren op velden die in je select-list staan. Of is dat in MySQL ook anders?

[ Voor 26% gewijzigd door whoami op 27-05-2003 12:08 ]

https://fgheysels.github.io/

Pagina: 1