Mailinglisten-Archive |
Sebastian Mendel schrieb:
> ^^ wozu?
> damit ziehst du alle Datensätze die gleichhohe Votes haben in einem Monat
> zusammen, ohne genu zu definieren welcher der beiden oder mehreren
> Datensätze nun gnommen werden soll, dein Ergebniss ist also 'zufällig' wenn
> mehrere Datensätze identische Votes haben. Im MySQL Handbuch steht dazu auch
> extra das das Ergebnis so nicht vorhersagbar ist.
>
> sprich ID 1 und 2 haben beide 30 Votes im Januar, dann weißt du nie ob du ID
> 1 oder ID 2 bekommst, und das auch noch bei jeder Abfrage, sprich es kann
> sich bei jeder Afbrage ändern ob du ID 1 oder 2 bekommst.
>
>
> eventuell könntest du noch einen Zeitstempel des letzten Votes anlegen und
> dann den nehmen der als erster die meißten Votes erreicht hat.
>
>
>
>
Du hast schon recht, das es eher zufällig ist, welcher Datensatz
genommen wird.
Aber das ist nicht weiter schlimm, da diese Abfrage nur einmal monatlich
eine xml auswirft bzw. schreibt.
Mit dem Zeitstempel ist keine schlechte Idee, mal sehen ob ich das hin
bekomme.
Die Query ist inzwischen auf ein weitere left join angewachsen, das die
lcb Daten anhand der lcbid ermittelt und mit ausgibt.
Frage mich, wie ich da noch ein weiteres MIN() und HAVING oder was auch
immer rein bekomme.
SELECT v.indate AS `date`, lcb.id AS `id`, lcb.nick AS `nick`, lcb.img
AS `img`, lcb.altimg AS `altimg`, v.maxvotes AS `votes` FROM
(
SELECT
l.indate,
l.lcbid,
l.votes,
MAX(l2.votes) AS maxvotes
FROM
lcb_vote AS l
LEFT JOIN
lcb_vote AS l2
ON
l.indate = l2.indate
GROUP BY
l.indate,
l.lcbid
HAVING maxvotes = l.votes
) AS v
LEFT JOIN
lcb_lcb lcb
ON
v.lcbid = lcb.id
GROUP BY v.indate
ORDER BY v.indate DESC
LIMIT 12
Aber danke für den Hinweis, wenn du noch eine Idee auf Basis der
jetzigen query hast, würde mich das sehr freuen ;-).
MfG
Martin Walper
--
Martin Walper
martin at klickhere.com
Webdesign & Hosting
http://www.klickhere.com
Tel.:(0034) 96 583 4119
php::bar PHP Wiki - Listenarchive