mySQL GROUP BY und ORDER BY
lixx
- datenbank
Hallo Selfer!
Ich möchte aus einzelnen Keywörter, die in der Datenbank gespeichsert sind, die herausfiltern, die die meisten Einträge haben. Soweit funktioniert das auch ganz gut.
SELECT index_words.baseword AS word, MAX( index_rel.count ) AS count, [...]
FROM pages
LEFT JOIN index_phash ON ( index_phash.data_page_id = pages.uid )
LEFT JOIN index_rel ON ( index_rel.phash = index_phash.phash )
LEFT JOIN index_words ON ( index_words.wid = index_rel.wid )
WHERE index_words.baseword IS NOT NULL AND CHAR_LENGTH( index_words.baseword ) > 4 AND index_words.metaphone > 0
GROUP BY index_words.wid, index_words.metaphone
ORDER BY count DESC
LIMIT 0,15
Ergebnis:
quelle 15
wikipedia 15
defninition 15
werden 12
website 10
banners 9
seite 9
weblog 8
bewertung 8
einer 8
referrer 8
popups 7
google 7
klick 7
webseiten 7
Jetzt will ich aber, das diese Untermenge nochmals zufällig sortiert wird. Mach ich aber ein ORDER BY RAND(), dann werden ALLE Datensätze sortiert und nicht nur die oben ausgegebenen. Womit nicht mehr die häufigsten Keywords angezeigt werden, sondern auch die, die nur einmal vorkommen.
Gibt's da einen speziellen Trick, oder soll man das über ein SubSelect machen?
lg lixx
Hi,
Gibt's da einen speziellen Trick, oder soll man das über ein SubSelect machen?
Der Trick heisst Subselect / Subquery. Vorausgesetzt, dein Datenbanksystem unterstützt das. Bei MySQL ja nicht immer so selbstverständlich. Subselects sind keine Magie und kein Verbrechen.
Gruss, Frank
yo,
Der Trick heisst Subselect / Subquery. Vorausgesetzt, dein Datenbanksystem unterstützt das. Bei MySQL ja nicht immer so selbstverständlich. Subselects sind keine Magie und kein Verbrechen.
das wird bei mysql so einfach nicht funktionieren, da du in der unterabfrage die menge nicht mit LIMIT beschränken kannst. aber es gibt sicherlich auch andere wege, die datenmenge einzuschränken.
Ilja
Dank Euch beiden für die Antwort. Mit einem Subquery habe ich es hinbekommen. Leider hilft mir das jetzt auch nicht weiter. Wollte es im Typo3 im TypoScript verwenden, dort sind aber die Einschränkungen zu groß und so nicht machbar.
lg lixx