2016-09-19 6 views
-1
while ($categories = mysql_fetch_array($category_result)) { 
$item_result = mysql_query("SELECT * FROM zw_".$categories['Category']."s WHERE ItemId = '".$categories['Id']."' ORDER BY Level"); 
    $item = mysql_fetch_assoc($item_result); 
    echo $item['Level']; 

Der Ausgang dieses in MySQL arbeiten, istORDER BY nicht

15 
35 
55 
75 
95 
115 
135 
150 
15 
27 
48 
68 
83 
11 
40 
62 
80 
95 
110 
125 

Ich kann nicht wirklich ein Muster finden Sie hier. Ich möchte, dass es von der niedrigsten Nummer zur höchsten Nummer geht, die ORDER BY soll, oder? Level ist immer INT und dies ist innerhalb einer while Schleife.

+2

der Code wird nicht genug für eine korrekte Auswertung vorgesehen ist .. bitte mehr Code zeigen .. – scaisEdge

+0

Es scheint, dass Sie Ihre Abfrage in einer Schleife ruinieren und Sie sehen, niedrig bis hoch jedes Mal, wenn Ihr ItemId ist geändert. Wie nach 150 startest du für eine neue itemId und so weiter –

+0

@ user3360140 Das ist es wahrscheinlich. Wie gesagt, es ist in einer 'while' Schleife. –

Antwort

0

prüfen diese

while ($categories = mysql_fetch_array($category_result)) { 
$item_result = mysql_query("SELECT * FROM zw_".$categories['Category']."s WHERE ItemId = '".$categories['Id']."' ORDER BY Level ASC"); 
$item = mysql_fetch_assoc($item_result); 
echo $item['Level']; 
0

Try Iterierte über das Ergebnis der inneren Abfrage .. zB:

while ($categories = mysql_fetch_array($category_result)) { 
    $item_result = mysql_query("SELECT * FROM zw_".$categories['Category']."s WHERE ItemId = '".$categories['Id']."' ORDER BY Level"); 
    wwhile($item = mysql_fetch_assoc($item_result)) { 

      echo 'Category : ' . $categories['Id'] . ' Level : ' . $item['Level']; 

    } 
} 
0

Ich glaube, Sie den Tabellennamen dynamisch konstruieren, Daten mit Ihnen von einigen gelesen andere Tabelle (oder vielleicht anderswo). Daher möchten Sie Datensätze aus einer Sammlung separater Tabellen und dann den gesamten Satz sortieren.

Vielleicht könnten Sie Ihr SQL erstellen, um eine "UNION" für jede eindeutige Tabelle zu erstellen, so dass die Abfrage nur einmal ausgeführt wird und die gesamte Ergebnismenge sortiert. Möglicherweise, eine Union Klausel (OK, die erste Klausel ist nicht mit "UNION" eingeführt)!) für jede ($ categories ['Category'], $ categories ['Id']) Kombination wird zu viel für Ihre RDBMS zu handhaben. Sie können also an einer Klausel pro $ categories ['Category'] festhalten und alle zugehörigen $ categories ['Id'] s in eine "IN" -Bedingung einbauen.

Überlegen Sie, ob es besser ist, bei dem zu bleiben, was Sie haben, und schreiben Sie Code, um die Ergebnisse zu sortieren, die Sie bekommen.