Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » mysql: Rang herrausfinden Antworten
mysql: Rang herrausfinden

Tobi W.
Mausakrobat


Beiträge: 181


Hallo,

gibt es eine Möglichkeit mit SQL den Rang herrauszufinden.
Beispielsweise hat man bei einer Liga eine Sortierung nach
1. Punkte
2. Torverhältnis (kann auch wenn nicht anders möglich fest in der Tabelle stehen)

Gibt es jetzt eine einfache Möglichkeit den Rang einer bestimmten Mannschaft herrauszufinden, ohne das man gleich die ganze Tabelle durchgeht und zählt. Das wäre bei vielen Einträgen ein bisschen doof.

Danke,
Gruß
Tobi

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

  Profil   Website   Editieren   Zitieren

dee123
Otto-Normal-Poster


Beiträge: 63


Hi,
wenn du den Rang bzw. die Punkte von Hand einträgst:
1:
"select (*) FROM tabelle ORDER BY Punkte ASC (oder DESC)"

ASC oder DESC = aufsteigender oder absteigender Reihenfolge

---
Meine alte Signatur gefiel mir nicht mehr. Darum hab ich jetzt eine neue.

Diese Nachricht wurde geändert von: dee123
  Profil   Website   Editieren   Zitieren

Tobi W.
Mausakrobat


Beiträge: 181


Der Rang wird nicht in der Tabelle gespeichert, sonder soll ausgegeben werden.
Deine Idee bringt mich da leider nicht weiter, aber danke.

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

  Profil   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Lass die Datensätze wie angegeben sortieren und füge deiner Schleife zum Auslesen eine Zählvariable zu, die bei jedem Durchlauf um 1 erhöht wird und gib sie per echo() aus.

Wenn ich dich richtig verstanden habe, willst du nur eine einfache Nummer ausgeben, die jeweils um 1 erhöht wird. Ansonsten poste nochmal, was du GENAU meinst.

---

  Profil   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Ich glaube er sucht ne direkte Möglichkeit das mit MySQL berechnen zu lassen, aber ne wirkliche Idee hab ich gerade auch nicht.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Tobi W.
Mausakrobat


Beiträge: 181


languitar hat Recht. Ich möchte es einfach direkt haben. Ähnlich wie mit COUNT - da läßt ja auch niemand die durchrattern und zählt mit.

Wenn ich erst tausende von Datensätzen (wenn auch nicht die komplette Zeile) durchrattern muss um den Rang zu bestimmen, dann zieht das ganz schön am Server. Vor allem, weil es ja jedesmal gemacht werden muss.

Ist ja schon ein bisschen doof.

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

Diese Nachricht wurde geändert von: Tobi W.
  Profil   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Naja, wenn du die Datensätze sowieso in einen Array einliest, kannst du ja einfach den Array-Key ausgeben, wenn er numerisch ist (+1 natürlich).

---

  Profil   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Das ist aber unnützer Datenmüll.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


languitar schrieb am 12.05.2006 19:57
Das ist aber unnützer Datenmüll.


Wieso? Er will die Daten ja früher oder später sowieso ausgeben. Das einzige Problem ist, wenn er aus der Mitte irgendwelche Datensätze rausholen will, denn dann würde ja der Index wieder bei 0 beginnen.

---

  Profil   Website   Editieren   Zitieren

Tobi W.
Mausakrobat


Beiträge: 181


Es ist Datenmüll. Ich würde unmengen an Daten rumladen für eine solch simples ergebnis.

Wenn es nur eine Bedingung wäre, dann wäre es ja kein Problem.

"Select COUNT(*) tbl WHERE Punkte > $punkte_spieler"

Da es aber bei Punktgleichheit auf das Torverhältnis ankommt klappt es nicht, oder besser gesagt ich weiss nicht wie.

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

  Profil   Website   Editieren   Zitieren

flipflop
Otto-Normal-Poster


Beiträge: 63


das geht doch dann relativ einfach
zähle die Anzahl der Ergebnisse für die Abfrage
1: 
2: 
3:
"Select COUNT(*) tbl WHERE Punkte > $punkte_spieler"

mit mysqlnumrows (?) schau nochmal nach der richtigen schreibweise
Wenn das Ergebnis >= 2 ist
dann { brechne Torverhältnis oder steht das in der Datenbank und echo die Reihe wo am besten ist }

oder soll es reines SQl sein?



---
http://alles-ausser-banane.de/

  Profil   Website   Editieren   Zitieren

Tobi W.
Mausakrobat


Beiträge: 181


Gute Idee flipflop,

aber ich bin noch auf eine bessere Gekommen. Mit nur einen SQL

Guckste hier:
1:
"Select COUNT(*) tbl WHERE (Punkte > $punkte_spieler) OR (Punkte = $punkte_spieler AND Torverhaeltnis > $torverhaeltnis_spieler)"


Das gute ist, dass man es so recht weit erweitern kann.
Das ich da nicht schon früher drauf gekommen bin....

(Herraus kommt die Anzahl der Spieler, die vor dem Spieler X sind - also evtl. noch +1 rechnen um auf den Platz zu kommen.)

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

Diese Nachricht wurde geändert von: Tobi W.
  Profil   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Tobi W. schrieb am 16.05.2006 09:51
Gute Idee flipflop,

aber ich bin noch auf eine bessere Gekommen. Mit nur einen SQL

Guckste hier:
1:
"Select COUNT(*) tbl WHERE (Punkte > $punkte_spieler) OR (Punkte = $punkte_spieler AND Torverhaeltnis > $torverhaeltnis_spieler)"


Das gute ist, dass man es so recht weit erweitern kann.
Das ich da nicht schon früher drauf gekommen bin....

(Herraus kommt die Anzahl der Spieler, die vor dem Spieler X sind - also evtl. noch +1 rechnen um auf den Platz zu kommen.)


Achso, ich dachte, Du willst es unbedingt ohne, dass das Torverhältnis in der Tabelle steht haben.
Na dannnnn, ist es ja gaaanz einfach .


---

  Profil   Website   Editieren   Zitieren

Tobi W.
Mausakrobat


Beiträge: 181


Hab ich aber gleich im ersten Posting geschrieben.

Jetzt sagen, dass es ganz einfach ist hätteste dann ja schon vorher den Ansatz bringen können

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

Diese Nachricht wurde geändert von: Tobi W.
  Profil   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Klar. War auch nur als Scherz gemeint. Ehrlich gesagt, hatte ich schon von Anfang an nicht genau gewusst, was Du meinst/willst. Aber jetzt hast Du die Lösung ja gefunden.

---

Diese Nachricht wurde geändert von: chip
  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben