SELECT mit Positionsangabe in Ergebnismenge

Sorry, mit dem kann ich immer noch nix anfangen. In meinem vorhergehenden Posting steht was ich zur Fehleranalyse brauche.
Zusätlich zum SQL und der AUsgabe je noch ein Beispiel wie es sein sollte.
 
Sry das ich gestern nicht mehr geantwortet habe, aber hier war einfach zuviel zu tun. Ich hoffe mal dass du nun mit meinen Daten was anfangen kannst:

Richtiges Ergebnis:
Code:
SELECT rl.*
FROM
	(
		SELECT @pos:=@pos+1 AS pos,	mydata.*
		FROM
			(SELECT @pos:=0) AS vars,
			(
				SELECT team, SUM(ergebnis) AS erg
				FROM highscore 
				GROUP BY team
				ORDER BY erg DESC
			) AS mydata
	) AS rl
WHERE 1
Result erg DESC


Falsches Ergebnis (Position wird nicht umgedreht):
Code:
SELECT rl.*
FROM
	(
		SELECT @pos:=@pos+1 AS pos,	mydata.*
		FROM
			(SELECT @pos:=0) AS vars,
			(
				SELECT team, SUM(ergebnis) AS erg
				FROM highscore 
				GROUP BY team
				ORDER BY erg ASC			) AS mydata
	) AS rl
WHERE 1
Result erg ASC


Falsches Ergebnis (Position wird nicht richtig einsortiert):
Code:
SELECT rl.*
FROM
	(
		SELECT @pos:=@pos+1 AS pos,	mydata.*
		FROM
			(SELECT @pos:=0) AS vars,
			(
				SELECT team, SUM(ergebnis) AS erg
				FROM highscore 
				GROUP BY team
				ORDER BY team ASC
			) AS mydata
	) AS rl
WHERE 1
Result team ASC


Falsches Ergebnis (Position wird nicht richtig einsortiert):
Code:
SELECT rl.*
FROM
	(
		SELECT @pos:=@pos+1 AS pos,	mydata.*
		FROM
			(SELECT @pos:=0) AS vars,
			(
				SELECT team, SUM(ergebnis) AS erg
				FROM highscore 
				GROUP BY team
				ORDER BY team DESC			) AS mydata
	) AS rl
WHERE 1
Result team DESC
 
Zuletzt bearbeitet:
Irgendwie bin ich grad blind. Beim Beispiel 1, 2 und 4 seh ich kein Unterscheid im SQL
Und beim 3 wird irgendwie völlg falsch sorteirt, wenn ich das Ergebnis anschaue. Das ist eine DESC-Sortierung auf das erg im Bild, während im Code eine ASC-Sortierung steht.

Sorry, aber irgendwie gehn die Resultate absolut nicht mit dem Query überein. Machst du nachher noch etwas mit den Daten? Setzt du im PHP noch ein weiteres SELECT um das Query?
 
Sorry ... der 1. und der 2. SQL Code waren wirklich identisch ... ich habe jetzt die Sortierung im 2. Statement abgeändert so dass es zum Bild passt.

Jetzt stimmt aber alles ... und ich gebe meine Ergebnisse genau so aus ohne weitere Selects oder ähnliches abzusetzen
 
Alles klar.
Du sortierst im inneren. Danach wird darüber die pos ermittelt. Die innere Sortierung darfst du nicht verändern, da auf der die pos berechnet wird. Wenn du nachher die Ausgabe umsortiert haben willst, dann musst du das über alles machen

Fall 2
SQL:
SELECT rl.*
FROM
    (
        SELECT @pos:=@pos+1 AS pos, mydata.*
        FROM
            (SELECT @pos:=0) AS vars,
            (
                SELECT team, SUM(ergebnis) AS erg
                FROM highscore 
                GROUP BY team
                -- Diese Sortierung dient der Festlegung von pos und darf darum nicht verändert werden
                ORDER BY erg DESC
            ) AS mydata
    ) AS rl
WHERE 1
-- Hier sortieren um die Anzeige zu ändern
ORDER BY rl.erg ASC

Fall 3
SQL:
SELECT rl.*
FROM
    (
        SELECT @pos:=@pos+1 AS pos, mydata.*
        FROM
            (SELECT @pos:=0) AS vars,
            (
                SELECT team, SUM(ergebnis) AS erg
                FROM highscore 
                GROUP BY team
                -- Diese Sortierung dient der Festlegung von pos und darf darum nicht verändert werden
                ORDER BY erg DESC
            ) AS mydata
    ) AS rl
WHERE 1
-- Hier sortieren um die Anzeige zu ändern
ORDER BY rl.team ASC
 
Zuletzt bearbeitet von einem Moderator:
Awesome ******

Genau so wollte ich es haben. Vielen Lieben Dank für deine Mühe und vor allem für deine Geduld. Du hast mir wirklich sehr geholfen :)
 
Bin froh, dass wir das doch noch hingekriegt haben. Hätte sonst an meinen MySQL-Kenntnissen gezweifelt *g*
 

Neue Beiträge

Zurück