2Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
575
575
EMPFEHLEN
-
Hallo Tutorials
Ich suche nach einem Order By Statement welches mir die naheliegensten Positionen sortiert ausgibt. Ich stehe jetzt bloss ein wenig auf dem Schlauch wie das aussehen müsste.
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
$getFoundSammelplatz = "SELECT SammelplatzID, Username FROM FoundSammelplatz WHERE Username='$Username'"; $result = mysql_query($getFoundSammelplatz); IF(mysql_num_rows($result) != 0) { while ($row = mysql_fetch_assoc($result)) { $SammelplatzID=$row["SammelplatzID"]; $getSammelplatz = "SELECT SammelplatzID, Ressource, ScrapX, ScrapY, Menge FROM Sammelplatz WHERE SammelplatzID= $SammelplatzID ORDER BY ScrapX='$PosX' AND ScrapY='$PosY'"; $result1 = mysql_query($getSammelplatz);
Ich denke ohne Join wird das ganze garnicht gehen.
Noch zur kurzen Erklärung: $PosX und $PosY sind unveränderliche Fixpunkte der User sowas wie die Hauptzentrale. Gesucht wird eine Liste nächstliegender Ressourcen nach ScrapX und ScrapY (veränderlich und begrenzt auf 15).Geändert von Joe (21.11.11 um 18:22 Uhr) Grund: Ergänzungen wegen logischen Fehler :)
-
item: Du mischt da ORDER BY und WHERE. Alles was vergleicht gehört nie und nimmer in den ORDER BY Teil
item: Jepp, ein Join währe nützlich
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
SELECT sp.* FROM FoundSammelplatz AS fsp INNER JOIN Sammelplatz AS sp ON fsp.SammelplatzID = sp.SammelplatzID WHERE fsp.Username='{$Username}' AND ScrapX='{$PosX}' AND ScrapY='{$PosY}' ORDER BY --TODO: Sortierfelder Kommasepariert auflisten
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Herzlichen Dank damit bin ich ein für mich beinahe unlösbaren Schritt weitergekommen.
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
SELECT sp.* FROM FoundSammelplatz AS fsp INNER JOIN Sammelplatz AS sp ON fsp.SammelplatzID = sp.SammelplatzID WHERE fsp.Username='{$Username}' ORDER BY sp.ScrapX='{$PosX}', sp.ScrapY='{$PosY}' DESC
Nun muss mir nur noch was wegen der Sortierung einfallen.
Bei dieser ORDER BY Position 100/100 kommt folgendes heraus:
Eigentlich müsste der Sammelplatz mit 100/100 als erstes in der Liste stehen und 100/85 als letztes.Kleine Edelsteinefabrik mit 13848 Edelsteine auf Position 102/100
Steinhaufen mit 9991 Stein auf Position 102/97
Plastikfabrik mit 15290 Plastik auf Position 101/102
Eisenhaufen mit 9939 Eisen auf Position 103/101
Rest Edelmetall mit 3880 Edelmetall auf Position 100/100
Rest Sand mit 3687 Sand auf Position 100/105
Grosser Stahlhaufen mit 11286 Stahl auf Position 100/99
Holzhaufen mit 8698 Holz auf Position 100/106
Grosser Uranhaufen mit 10694 Uran auf Position 100/102
Ölfabrik mit 15033 Öl auf Position 100/85
Aber wie immer vielen Dank für deine Hilfe
Geändert von Joe (21.11.11 um 20:33 Uhr) Grund: Code leserlicher formatiert
-
Ok das war mir bisher nicht bewusst. MySQL selbst hat kein Fehler geworfen.item: Du mischt da ORDER BY und WHERE. Alles was vergleicht gehört nie und nimmer in den ORDER BY Teil
Also ich denke es nach einer bestimmten Position X/Y zu ordnen dürfte einiges schwieriger werden. Habe es daher so ordnen lassen das die User selbst in der Lage sind die nheliegensten Plätze zu finden. (Man kann die Plätze aus der Liste nehmen zumeist vermutlich die am weitesten entfernten Plätze)
Code sql:1 2 3 4 5 6 7 8 9 10 11
SELECT sp.* FROM FoundSammelplatz AS fsp INNER JOIN Sammelplatz AS sp ON fsp.SammelplatzID = sp.SammelplatzID WHERE fsp.Username='{$Username}' ORDER BY sp.ScrapX ASC, sp.ScrapY ASC
Das erzeugt:
Also recht übersichtlich und daher auch ausreichend. Danke Yaslaw.Ölfabrik mit 15033 Öl auf Position 100/85
Grosser Stahlhaufen mit 11286 Stahl auf Position 100/99
Rest Edelmetall mit 3880 Edelmetall auf Position 100/100
Grosser Uranhaufen mit 10694 Uran auf Position 100/102
Rest Sand mit 3687 Sand auf Position 100/105
Holzhaufen mit 8698 Holz auf Position 100/106
Plastikfabrik mit 15290 Plastik auf Position 101/102
Steinhaufen mit 9991 Stein auf Position 102/97
Kleine Edelsteinefabrik mit 13798 Edelsteine auf Position 102/100
Eisenhaufen mit 9939 Eisen auf Position 103/101
-
Wie geschrieben '100=90' im ORDER BY wirft keinen Fehler. Aber er sortiert nicht nahc der Zahl sondern nach dem Resultat. Und das ist bei '100=90' also FALSE.
Darum wirft die MySQL keinen Fehler.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Achso verstehe in diesem Fall 'False' sortiert er nicht wirklich.
Hatte mich vor deinem Post selbst versucht mit einen Left Join (Hatte erstmal wenig Erfolg). Gab es einen bestimmten Grund weshalb ein Inner Join näher liegt?
-
Er sortiert schon. Aber er sortiert den Wert False (ist glaub 0) und True (ist glaub -1)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Tabelle VALUE ----- 12345 67890 23456 order by Value 12345 23456 67890 order by Value LIKE '23*" VALUE SORT_VALUE (VALUE LIKE '23*') --------------- 23456 TRUE 12345 FALSE 67890 FALSE
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
MySQL - ORDER BY nach eigenem Text
Von Pinky im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 28.09.11, 15:54 -
Mysql 5 Unknown column 'af.artikel_nummer' in 'on clause'
Von aTa im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 02.06.10, 11:05 -
MySQL - Bei ORDER BY leere Felder nach hinten
Von suntrop im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 15.01.10, 10:55 -
MYSQL Version 5 Problem, Unknown column 'p.manufacturers_id' in 'on clause'
Von liquidbeats im Forum Relationale DatenbanksystemeAntworten: 6Letzter Beitrag: 05.07.07, 22:49 -
[MySQL] Column Alias in WHERE clause?
Von Romsl im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 22.02.07, 20:15





Zitieren

Login





