nr | refnr
$nr1 | $refnr
$nr2 | $refnr
$nr3 | $refnr
So, jetzt kann natürlich auch sein, dass jemand bei nr irgendwo unten eine Nummer einträgt, die oben schon als refnr auftaucht.
Das ist richtig. Aber das _darf_ kein Problem sein.
Jetzt sollen Punkte verteilt werden:
Für jedes mal Leute eintragen soll es 9 Punkte geben (3 für jeden), also lass ich einfach in der rechten Spalte zählen, wie oft die refnr vorkommt und multipliziere das ganze mit 3.
OK, für jeden Eintrag gibt es 3 Gumipunkte, wenn 3 Einträge Pflicht sind, werden 9 Gummies erzwungen. Ein "COUNT(*)" ist zusammen mit einem "GROUP BY refnr" dann für Abfrage die richtige Wahl.
Dazu addiere ich dann 10 Punkte für jedes Auftreten in der linken Spalte, also 10 mal die Anzahl, wie oft derjenige von anderen eingetragen wurde.
Aha, nr und refnr zeigen auf dasselbe Objekt, nämlich den Nutzer, gut zu wissen. Es gibt also Gummies für jeden Eintrag (3 Gummies) und Gummies, wenn man eingetragen worden ist (stolze 10 Gummies).
Bis dahin ist das alles kein Problem.
Ich hoffe, dass Du irgendwo noch eine zweite Tabelle hast für die Nutzer, so dass wir die o.g. Tabelle als Beziehungstabelle haben?
Allerdings soll er jetzt die Punktzahl von ALLEN refnr. auswerten, also von allen, die rechts in der Spalte stehen.
OK, wie Du die Gummies kriegst, die durch Pflicht-Eintragen (jew. 9) generiert werden, ist oben beschrieben.
Nun, vermutlich möchtest Du die 10er-Gummies zu den 3er-Gummies zusammenzählen? Hmm, wie geht das? (Denk...)
Mit einem "COUNT(*)" auf das Datenfeld nr und einem "GROUP BY nr" kriegst Du die 10er-Gummies.
Jetzt hast Du zwei Datensatzmengen, die Du irgendwie zusammenführen müsstest. Dabei darf die Information nicht verloren gehen, ob es 3er- oder 10er-Gummies sind. Korrekt?
Wenn eine refnr oben auftaucht und erneut, soll nur die erste der beiden gewertet waren, da eine refnr ja nicht doppelt in der Rangliste vorkommen soll und da die Häufigkeit des Erscheines in der rechten Spalte ja schon durch die Formel belohnt wird.
Schon klar, das erledigt die Gruppierung.
Wie ist das ganze zu realisieren (den Sinn müsst ihr nicht verstehen, es geht um ein kleines Spiel, kann ich bei Bedarf später mal genauer erklären.
Das ist oben beschrieben (ausser dem Zusammenführen der beiden Datensatzmengen, dafür sind wir bereits ein wenig zu müde ;).
Moment, wir gehen noch mal in die Ausgangsanforderung:
$resultset1 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE nr LIKE '$refnr'" );
$resultset2 = mysql_query ( "SELECT COUNT(*) FROM haupttabelle WHERE refnr LIKE '$refnr'" );
Ja, das ist Murks, versuch mal:
SELECT (COUNT(*) * 3) as Dreiergummies, refnr as Nr FROM haupttabelle GROUP BY REFNR order by REFNR asc
SELECT (COUNT(*) * 10) as Zehnergummies, nr as Nr FROM haupttabelle GROUP BY nr order by nr asc
Mit irgendwelchen SUB-SELECTs und ggf. ein wenig UNION kommst Du dann sicherlich mit einer Abfrage an die Rangliste.