[mysql] group-by probleem

Pagina: 1
Acties:

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 12:54

HenkS

Da_king alias HenkS

Topicstarter
dag mensen ik heb de volgende query:

SELECT name,hostname,MAX(state) as state
FROM externalaliases
WHERE range='range1' and hostname!=''
GROUP BY name,hostname

en dat levert dit op:

name, hostname, state
----------------------------------
frankie test.dns.com 1
mark hallo.dns.com 2
hallo less.dns.com 1
klaas freak.dns.com 1
klaas strange.dns.com 2


maar nu is het de bedoeling van de query dat ik per NAME alleen de hoogste state terug krijg, dus ik dacht, doe het volgende:
dag mensen ik heb de volgende query:

SELECT name,hostname,MAX(state) as state
FROM externalaliases
WHERE range='range1' and hostname!=''
GROUP BY name <<< veld hostname dus weggehaald


MAAR nu krijg ik dus niet zoals verwacht:

klaas strange.dns.com 2

maar krijg ik:

klaas freak.dns.com 2

ik krijg dus door het group by gebeuren de verkeerde hostname bij de betreffende name en state terug.... (hij pakt bij een group by gewoon het 1e wat ie tegenkomt en plakt daar de hoogste state aan die erbij hoort.. maar dit klopt dus niet???)

wat doe ik fout??? of hoe kan ik het anders oplossen? of moet ik dit echt dmv de php code fixen?

thanks

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:21
Als je aggregated functies gebruikt in uw select (bv: max() ), dan moeten alle velden die geen aggregated column zijn, in de group by clause voorkomen.
Als je de hostname weglaat uit de select (en dus ook uit de group by), zou het moeten werken, maar dan ga je wel op een andere manier die hostname moeten phalen.

https://fgheysels.github.io/


  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 12:54

HenkS

Da_king alias HenkS

Topicstarter
ok thanks, dat is duidelijk (jammergenoeg)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Kik anders eens ff naar het having gedeelte van de syntax van een select statement..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
HenkS schreef op 16 oktober 2002 @ 08:54:
SELECT name,hostname,MAX(state) as state
FROM externalaliases
WHERE range='range1' and hostname!=''
GROUP BY name
Tja, ik blijf me verbazen dat MySQL zulke queries accepteert, want ze leveren af en toe inderdaad hele vreemde dingen op.

Never underestimate the power of