Ich habe mysql Tabelle mit Spalten id
, pos
und status
.
Und ich muss pos
Wert von genau id
mit dem nächsten kleineren pos
Wert austauschen. Aber ich muss nur Zeilen mit status = 1
zählen.
Mit anderen Worten sollte es so funktionieren:Machen 5 MySQL Abfragen in 1
$pos = mysql_result(mysql_query("select pos from foo where id = $id"),0);
$min = mysql_result(mysql_query("select min(pos) from foo where status = 1"),0);
if($pos != $min){
$i = mysql_result(mysql_query("SELECT pos from foo where pos < $pos ORDER by pos DESC LIMIT 1"),0);
mysql_query("update tbc_sidebar set pos = $i where id = $id");
mysql_query("update tbc_sidebar set pos = pos + 1 where id <> $id AND pos = $i");
}
Es funktioniert wie folgt ganz gut, aber ich denke, es ist nicht die beste Lösung, die 5-Abfragen zu haben, weil eine einfache Sache. Gibt es eine Möglichkeit, alles in weniger Fragen zu setzen? Vielen Dank!
Es funktioniert, es ist einfach, warum Dinge komplizieren? –