explofish: Sortieren von Daten

Hallo liebe Community!

Wir haben Folgende Situation:

Wir haben eine Datenbank mit Filialadressen

Wir wollen dem Kunden ermöglichen die nächstgelegene Filiale zu finden.

Folgendes habe ich schon realisiert:

Jede Filiale hat einen Längen und Breitengrad Bekommen.

Gibt der User seine Straße und Ort ein wird der Längen und Breitengrad des Users berechnet und über eine Mathematische formel der Abstand.

Nun habe ich diesen Abstand in einer while schleife der Mysql abfrage eingespeichert und möchte die daten nach dem abstand sortieren!

Genau da weiß ich nicht wie ich es angehen soll!

Ich hoffe euch ist klar wie meine Frage ist! Vielen dank für die hilfe schoneimal!

  1. Hallo,

    Nun habe ich diesen Abstand in einer while schleife der Mysql abfrage eingespeichert und möchte die daten nach dem abstand sortieren!

    Genau da weiß ich nicht wie ich es angehen soll!

    Am besten mit array_multisort() oder mit einem eigenen Sortier-Algorithmus, der - insofern du ein bisschen Erfahrung hast - in MAXIMAL einem Tag programmiert sein sollte... :D

    MfG

    --
    How long? Not long! 'Cause what you reap, is what you sow!!!
    SELF forever
    Mein Selfcode: ie:% br:< fl:( va:) ls:< fo:} rl:( n4:~ de:> ss:} ch:| js:| mo:| sh:( zu:{
    Neuer Selfcode encoder?
  2. Hello,

    Nun habe ich diesen Abstand in einer while schleife der Mysql abfrage eingespeichert und möchte die daten nach dem abstand sortieren!

    Wie hast Du das gemacht?
    Hast Du eine temporäre Tabelle mit den Filial-ID und der Kunden-Location-ID sowie den Abständen erzeugt?

    Die könntest Du dann leicht wieder über die Abstände sortieren lassen und die besten fünf (oder so ähnlich) anzeigen lassen.

    Ich denke nicht, dass das eine Aufgabe für die API (PHP) ist, sondern (fast) ausschließlich für die Datenbank.

    Wenn man zweistufig arbeitet, könnte man den Rechenaufwand sogar noch enorm vereinfachen.
    Selektiere erst die Datensätze der Filialen,

    pseudocode:

    where (x-eps) < Xs < (x+eps)
         and (y-eps) < Ys < (y+eps)

    wobei x die Gauss-Krüger-Koordinate der Filiale in X-Richtung
          y die Gauss-Krüger-Koordinate der Filiale in Y-Richtung
      und Xs und Ys diejenigen des Kunden sind.

    Reine Vergleiche gehen viel schneller, als Rechnungen

    Im zweiten Schritt lässt Du dann die Entfernungen ausrechnen und sortieren

    Im dritten Schritt kannst Du das dann ausgeben.

    Mit etwas Geschick (das fehlt mir hier im Moment) kann man das bei MySQL 5.x bestimmt auch schon ein einer einzigen Abfrage mit zwei (?) Subselects unterbringen.

    Ein harzliches Glückauf

    Tom vom Berg

    http://bergpost.annerschbarrich.de
    .

    --
    Nur selber lernen macht schlau
    1. Hello,

      Nachtrag:

      pseudocode:

      where (x-eps) < Xs < (x+eps)
           and (y-eps) < Ys < (y+eps)

      hierzu fällt mir noch "between" ein

      Ein harzliches Glückauf

      Tom vom Berg

      http://bergpost.annerschbarrich.de
      .

      --
      Nur selber lernen macht schlau