Kurz zum Hintergrund:
ich habe eine Datenbank mit 50 Einträgen. Jeder Eintrag stellt einen Tarif dar. Jeder Datensatz beinhaltet mehrere Preise pro Minute für verschiedene Nutzungsarten. Der Nutzer kann in ein Formular auf der Homepage eingeben, wieviele Minuten er gedenkt zu nutzen und das System soll den für Ihn günstigsten Tarif ausspucken. Bzw. die Liste danach sortieren. Der eigentliche Knackpunkt an der Sache ist, dass es Tarife mit Inklusivminuten gibt. Die müssen auch beachtet werden.
ich habe jetzt folgende Abfrage konstruiert:
Für die Tarife ohne Inklusivminuten stimmt die Rechnung, logisch weil hinten ja mit 0 multipliziert wird. Aber bei den Tarifen mit Inklusivminuten stimmt gar nix. Außerdem sortiert er sehr seltsam, er setzt alle Tarife mit Inklusivminuten ans Ende unabhängig davon ob sie billig sind oder nicht.
Das heißt also die Liste ist durcheinander, wobei er alle Tarife ohne Inklusivminuten an den Anfang setzt und auch richtig sortiert.
Hat jemand eine Idee?
ich habe eine Datenbank mit 50 Einträgen. Jeder Eintrag stellt einen Tarif dar. Jeder Datensatz beinhaltet mehrere Preise pro Minute für verschiedene Nutzungsarten. Der Nutzer kann in ein Formular auf der Homepage eingeben, wieviele Minuten er gedenkt zu nutzen und das System soll den für Ihn günstigsten Tarif ausspucken. Bzw. die Liste danach sortieren. Der eigentliche Knackpunkt an der Sache ist, dass es Tarife mit Inklusivminuten gibt. Die müssen auch beachtet werden.
ich habe jetzt folgende Abfrage konstruiert:
$sql = "SELECT * FROM tarifliste ORDER BY (FNHZ*$HZFN+FNNZ*$NZFN+FNWE*$WEFN+NIHZ*$HZintern+N INZ*$NZintern+EXHZ*$HZextern+EXNZ*$NZextern+EXWE*$ WEextern+SMS*$SMS+Grundgebuehr+Mindestumsatz+(if(I nklusivminuten>$minuten,$minuten-Inklusivminuten,Inklusivminuten-$minuten))*(if(Inklusivminuten>0,FNNZ,0)))";
Das heißt also die Liste ist durcheinander, wobei er alle Tarife ohne Inklusivminuten an den Anfang setzt und auch richtig sortiert.
Hat jemand eine Idee?
Kommentar