melmager
Erfahrenes Mitglied
ja man könnte es mit einer temp db lösen
aber das ding hat mein ehrgeiz geweckt *g*
nach einem guten frühstück und ein pott kaffee kam mir die eingebung
melmager prodly presends : the monster sql query *smile*
ich war schon auf dem richtigen weg nur müssen die tabellen anders mit einander verbunden werden:
ein kleines tut wie ich dazu gekommen bin:
select u.name,count(p3)*3 as c3 from spieler as u left join starvote as p3 on u.id=p3.threestar group by u.id
hier wird die usertabelle mit der punktetabelle verbunden (wobei die usertabelle vollständig erhalten bleibt) und wir zählen die einträge mit count (die mal der wertigkeit)
damit hätten wir schon mal die tabelle mit den dreierpunkten
da bei mysql von links nach rechts abgearbeitet wird können wir das ding erweitern
jetzt hauen wir die zweite verküpfung auf das ergebnis:
select u.name,count(p3)*3 as c3,count(p2)*2 as c2 from spieler as u left join starvote as p3 on u.id=p3.threestar left join starvote as p2 on u.id=p2.twostar group by u.id
wir verküpfen das ergebins der ersten joins wieder mit der punktetabelle ...
und weil so schön ist ein drittes mal:
select u.name,count(p3)*3 as c3,count(p2)*2 as c2,count(p1) as c1 from spieler as u left join starvote as p3 on u.id=p3.threestar left join starvote as p2 on u.id=p2.twostar left join starvote as p1 on u.id=p1.onestar group by u.id
damit hätten wir schon mal ein ergebnis das wir nur noch durch eine sortiermaschine schicken müssen:
sprich noch hinten dran:
order by c3 desc,c2 desc,c1 desc
als ergebis hast du dann namen anzahl der 3 punkte; anzahl der 2 punkte und anzahl der einerpunkte und das hübsch sortiert
gesamtpunkte machste dann in php nach der abfrage
$row = mysql_fetch_array();
$gesamt = $row['c3'] + $row['c2'] + $row['c1'];
......
PS: auch was dazugelernt hat
aber das ding hat mein ehrgeiz geweckt *g*
nach einem guten frühstück und ein pott kaffee kam mir die eingebung
melmager prodly presends : the monster sql query *smile*
ich war schon auf dem richtigen weg nur müssen die tabellen anders mit einander verbunden werden:
ein kleines tut wie ich dazu gekommen bin:
select u.name,count(p3)*3 as c3 from spieler as u left join starvote as p3 on u.id=p3.threestar group by u.id
hier wird die usertabelle mit der punktetabelle verbunden (wobei die usertabelle vollständig erhalten bleibt) und wir zählen die einträge mit count (die mal der wertigkeit)
damit hätten wir schon mal die tabelle mit den dreierpunkten
da bei mysql von links nach rechts abgearbeitet wird können wir das ding erweitern
jetzt hauen wir die zweite verküpfung auf das ergebnis:
select u.name,count(p3)*3 as c3,count(p2)*2 as c2 from spieler as u left join starvote as p3 on u.id=p3.threestar left join starvote as p2 on u.id=p2.twostar group by u.id
wir verküpfen das ergebins der ersten joins wieder mit der punktetabelle ...
und weil so schön ist ein drittes mal:
select u.name,count(p3)*3 as c3,count(p2)*2 as c2,count(p1) as c1 from spieler as u left join starvote as p3 on u.id=p3.threestar left join starvote as p2 on u.id=p2.twostar left join starvote as p1 on u.id=p1.onestar group by u.id
damit hätten wir schon mal ein ergebnis das wir nur noch durch eine sortiermaschine schicken müssen:
sprich noch hinten dran:
order by c3 desc,c2 desc,c1 desc
als ergebis hast du dann namen anzahl der 3 punkte; anzahl der 2 punkte und anzahl der einerpunkte und das hübsch sortiert
gesamtpunkte machste dann in php nach der abfrage
$row = mysql_fetch_array();
$gesamt = $row['c3'] + $row['c2'] + $row['c1'];
......
PS: auch was dazugelernt hat
Zuletzt bearbeitet: