SELECT Abfrage mit 2 order by Variablen liefert falsche Ergebnisse

2Pac

Erfahrenes Mitglied
Hallo!

Ich habe eine Tabelle in welcher ich 36 Datensätze haben. Diese sind je in 12 Unterteilt. Id = 1 Id = 2 und Id = 3.

Nun sortiere ich diese nach Punkten und nach Tordifferenz und speichere diese in eine weitere Tabelle um diese später eventuell ausgeben zu können. Bzw. vielleicht auch nur nachgucken zu können.

Auf folgende Weise habe ich dies realisiert:

PHP:
$absteiger1 = mysql_db_query("$DatabaseName", "SELECT id FROM teilnehmer where liga=1 order by punkte desc,dif desc LIMIT 9,10") OR die(mysql_error());
                      while ($data = mysql_fetch_row($absteiger1))
                      {
                       $absteig1 = $data[0];
                       mysql_db_query("$DatabaseName", "UPDATE umtausch SET ab1='$absteig1' where liga=1") OR die(mysql_error());
                      }

Das ganze führe ich auch noch für LIMIT 10,11 und LIMIT 11,12 aus. Wenn ich es mit desc mache wie hier gibt er wieder 12 , 12 , 12 was aber 10, 11 ,12 sein muss!

Verusche ich die Ausgabe per asc wieder zu geben, dann gibt er 1,3,5 aus.

Wo liegt mein Fehler?

MfG 2Pac
 
Versuch's mal so:
PHP:
$absteiger1 = mysql_db_query("$DatabaseName", "SELECT id FROM teilnehmer where liga=1 order by punkte,dif desc LIMIT 9,10") OR die(mysql_error());

redlama
 
Danke werde ich sofort versuichen wenn ich zuhause bin. Bin grad auf arbeit ^^

Ich hatte gestern Nacht noch versucht das order by punkte && def desc LIMIT 9,10...

Aber damit hat es nicht geklappt und ich denke das ist doch die selbe Anweisung oder? Also müsste dieses doch auch falsch sein.

Denn ich war gestern soweit, dass ich 9,10,11 drinne hatte. Stellte ich jedoch die konstellation der Punkte um so dass nicht user 10,11,12 letzter sind sonder wer anderes, dann gab er trotzdem 10,11,12 als id aus, was ja nicht sein dürfte.

Irgendwie kommt es mit vor als wenn er mit dem Limit nicht ganz zurecht kommt, aber es ist doch richtig so wie ich es verwendet habe. In anderen Tabellen ahbe ich genauso sortiert mit LIMIT. Aber kommt er vielleicht durcheinander durhc das doppelte order by?

Bin über jede Hilfe sehr dankbar da es ziemlich schnell gehen muss dieses Script zum laufen zu kriegen da es sich um eine Problemlösung einer Online-Liga handelt.

Danke im Vorraus 2Pac
 
Naja ich will halt die 12 Datenbankeinträge für jede Liga (id) nach zuerst punkten und dann nach Tordifferenz sortieren. Also wie eine Fussball Tabelle. Und aus dieser Sortierung soll dann die schlechtesten 3 Leute ausgelesen werden und in eine andere Tabelle geschrieben werden. Dann mache ich das gleiche mit Liga 2 (id=2) und lese dort aber die 3 besten und die 3 schlechtesten aus. Auch diese wieder in die Tabelle. Zum Schluss die 3 besten aus Liga 3 (id=3). Die auch da reintragen. Und danach sollte ich dann die ids der Absteiger bzw. Aufsteiger aus einer Tabelle haben. Denn ich will 1. auf diese zurückgreifen können und 2. einen Saisonabschluss simulieren!

D.h. Alle Absteiger sollen mit den Aufsteigern ausgetauscht werden. Damit dann quasi die nächste Saison beginnen kann.

Mfg 2Pac
 
redlama hat gesagt.:
Versuch's mal so:
PHP:
$absteiger1 = mysql_db_query("$DatabaseName", "SELECT id FROM teilnehmer where liga=1 order by punkte,dif desc LIMIT 9,10") OR die(mysql_error());

redlama

Hab das jetzt auch mal versucht, geht aber nicht. Er schreibt überall die 12 rein :(
 
Wenn du die mit den wenigsten Punkten haben willst, dann machs doch so:
Code:
SELECT id FROM tabelle WHERE liga='1' ORDER BY punkte asc, dif asc LIMIT 3
 
Also jetzt ist es so das er mir die Variable 1,2,3 ausgibt :) Es wird näher in die Richtung des ganzen glaub ich :)
 
Naja in der Tabelle sind Username mit ids zugeordnet....

id = auto_increment | Punkte und dif stehen aber auf 0 im Moment...

Oder meintest du etwas anderes ?
 

Neue Beiträge

Zurück